69,382
社区成员
发帖
与我相关
我的任务
分享
int main()
{
unsigned int a = 6;
int b = -20;
char c;
(a+b > 6) ? (c = 1):(c = 0);
printf("%d\n",c);
system("pause");
return 1;
}
#include <stdio.h>
int main()
{
unsigned int a = 6;
int b = -20;
char c;
((int)a + b > 6) ? (c = 1) : (c = 0); //搞清楚 为什么 (int)a 应该就知道问题答案了
printf("%d\n", c);
return 0;
}
int main()
{
unsigned int a = 6;
int b = -20;
char c;
/*
* unsigned int 类型最大可表示2^32 - 1;int类型最大可表示2^31-1
* 所以,b 首先转为unsigned int,然后在做加法运算。
* b<0,也就是b的最高位符号位是1,转为unsigned int后原来的符号位不再表示正负。
* 因此b是一个很大的正数,a+b也就会很大(4294967282)
*/
(a+b > 6) ? (c = 1):(c = 0);
printf("%d\n",c);
system("pause");
return 1;
}