【发布时间】:2018-05-11 17:38:44
【问题描述】:
#include<stdio.h>
void main()
{
unsigned x = 1;
signed char y = -1;
if(x > y)
printf("x > y");
else if(x == y)
printf("x == y");
else
printf("x < y");
printf("\n");
printf("%d",(signed char)x);
printf("\n");
printf("%d",(unsigned int)y);
}
OUTPUT:
x < y
1
-1
我希望输出是 x == y,因为在比较期间,有符号字符应该被转换为无符号整数? 请解释一下 x
【问题讨论】:
-
请正确缩进您的代码。机器(编译器)可以读取和编译任何东西,但是对于人类来说,它需要在将文本块读取为 code 时做出一点sense。提问时,文本区域右侧有一个橙色的大如何格式化框。还有一个完整的格式化辅助工具栏。还有一个 [?] 按钮提供格式化帮助。还有一个预览区域,显示您的帖子发布后的样子。使您的帖子清晰,并证明您花时间这样做,可以提高您获得好答案的机会。
-
为什么会期望 x == y?已签名到未签名并不意味着“删除符号”
标签: c integer-arithmetic type-promotion