在做了一些研究之后,我知道算术表达式 char 和 short 将在内部提升为 int。但我仍然想知道这样的整数提升是否会在内部分配中发生。
(所以请不要只给我关于其他表达式的链接。我问的是 ASSIGNMENT 表达式内部发生了什么)
char ch1, ch2 = -1;
ch1 = ch2; // Q
问:以下哪项会在内部发生?
1、ch1的值直接赋给ch2。整数促销不会在这里发生。
2、ch1的值先升为int型(8位→32位),再将32位的值降为char型,8位,最终结果。整数促销发生在这里。
我找到了这本书:C Primer Plus,在第 174 页有:
“...当出现在表达式中时,char 和 short,无论有符号还是无符号,都会自动转换为 int,或者如果需要,转换为 unsigned int...”
所以我认为它应该是 2,但我听说有人告诉我它应该是 1,整数提升不会发生。
我真的很困惑。请问你能帮帮我吗?先感谢您。