当前位置:  开发笔记 > 编程语言 > 正文

相对于一元算术运算符+,C和C++之间存在差异的原因是什么

如何解决《相对于一元算术运算符+,C和C++之间存在差异的原因是什么》经验,为你挑选了0个好方法。

在C中,一元加运算符称为一元算术运算符,可能不适用于指针(C标准,6.5.3.3一元算术运算符).

1一元+或 - 运算符的操作数应具有算术类型 ; 〜运算符,整数类型; 的!运算符,标量类型.

因此这个程序不会编译

#include 

int main(void) 
{
    int a = 10;
    int *pa = &a;

    printf( "%d\n", *+pa );

    return 0;
}

但是在C++中,一元加运算符可以应用于指针(C++标准,5.3.1一元运算符)

7一元+运算符的操作数应具有算术,无范围枚举或指针类型,结果是参数的值.对整数或枚举操作数执行整体提升.结果的类型是提升的操作数的类型.

这个程序编译成功.

#include 

int main() 
{
    int a = 10;
    int *pa = &a;

    std::cout << *+pa << std::endl;

    return 0;
}

维持C和C++之间差异的原因是什么?


当我回答问题为什么int指针的大小与int数组的大小不同时,问题出现了?.我将展示如何将数组转换为sizeof运算符中的指针.

起初我想写

sizeof( +array )

但是这个表达式在C中是无效的.所以我不得不写

sizeof( array + 0 )

我发现C和C++之间存在这样的差异.:)

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有