小编use*_*758的帖子

为什么C/C++自动将char/wchar_t/short/bool/enum类型转换为int?

因此,如果我理解得很好,整体推广提供:char, wchar_t, bool, enum, short类型总是被转换为int(或unsigned int).然后,如果表达式中有不同的类型,则将应用进一步的转换.

我理解得这么好吗?

如果是,那么我的问题是:它为什么好?为什么?不要变得char/wchar_t/bool/enum/short不必要吗?我的意思是例如:

char c1;
char c2;
c1 = c2;
Run Code Online (Sandbox Code Playgroud)

正如我之前所描述的,charALWAYS被转换为int,所以在这种情况下自动转换后,这看起来像这样:

int c1;
int c2;
c1 = c2;
Run Code Online (Sandbox Code Playgroud)

但我不明白为什么这样好,如果我知道那种char类型足以满足我的需要.

c c++ integer-promotion

8
推荐指数
2
解决办法
1700
查看次数

C++主表达式 - 它是否是主表达式?

1)为什么他们被称为"主要"?按照评价的顺序,他们是第一个?

2)C++ 03标准定义了第5章(注1)中的表达式:"表达式是指定计算的运算符和操作数的序列."

然后5.1"主表达式"定义主表达式列表:

(1)primary-expression:

文字

这个

(表达)

ID-表达

我的主要问题是关于第三点:

(表达)

因此,根据标准,带括号的每个表达式都是主表达式,首先计算它们.它看起来很合理,并且给出了C++表达式(优先级)中括号行为的精确解释.

所以这就是例如

(变量+10)

是一个主要的表达.

var =(变量+ 10)*3

根据我的理论,它看起来很合乎逻辑,但我知道其他来源

(变量+10)

不是主要表达,但为什么?我不明白,但标准定义了

(表达)

作为主要表达.

请帮帮我,因为我做不到.非常感谢,对不起我的英语不好.你好.

c++ standards expression

4
推荐指数
1
解决办法
3301
查看次数

GCC编译器对C/C++标准保持多少?

例如,具有C99标准的C编程语言支持十六进制浮点文字,但C++与C++ 03标准不支持.

我对它进行了测试,GCC在C++ 03模式下识别了十六进制浮动文字(-std = c ++ 03),但根据C++标准,它不应该.我知道,这不是一个悲剧,我只是对这个问题感兴趣..

GCC编制器是否符合标准?你能推荐我一个符合标准"完美"的C/C++编译器吗?

gcc c99 c++03

2
推荐指数
1
解决办法
114
查看次数

C++:&*A对于数组声明不等同于A?

C标准6.5.3.2地址和间接运算符(3)表示:

"一元&运算符返回其操作数的地址.如果操作数的类型''类型'',结果的类型''指向类型''.如果操作数是一元*运算符的结果,那么运算符都不是也没有对&运算符进行求值,结果就好像两个都被省略了,除了对运算符的约束仍然适用,结果不是左值."


"83)因此,&*E等于E(即使E是空指针),&(E1 [E2])到((E1)+(E2)).如果E是a,则总是如此函数指示符或作为一元&运算符的有效操作数的左值,*&E是函数指示符或等于E的左值.如果*P是左值并且T是对象指针类型的名称,*(T) P是一个左值,其类型与T指向的类型相符."

所以,如果我理解得好,&*E就好像我们会删除一样&*.然而,

#include <cstdio>
#include <typeinfo>

int main()
{
    float A[2];
    printf( "name: %s\n", typeid( &*A ).name());
    printf( "name: %s\n", typeid( A ).name());
    getchar();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

会给:

name: Pf
name: A2_f
Run Code Online (Sandbox Code Playgroud)

所以他们不一样.

怎么了?我有什么误会?非常感谢你的帮助,谢谢.

c++ arrays dereference

2
推荐指数
2
解决办法
123
查看次数

标签 统计

c++ ×3

arrays ×1

c ×1

c++03 ×1

c99 ×1

dereference ×1

expression ×1

gcc ×1

integer-promotion ×1

standards ×1