我是C的新手.我最近在C中遇到了这段代码:
#include <stdio.h>
int main()
{
unsigned Abc = 1;
signed Xyz = -1;
if(Abc<Xyz)
printf("Less");
else
if(Abc>Xyz)
printf("Great");
else
if(Abc==Xyz)
printf("Equal");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我尝试运行它并输出"Less".它是如何工作的?unsigned Abc是什么意思?我可以理解unsigned char Abc,但只是未签名的Abc?我很确定Abc不是数据类型!如何(和为什么?)这样做?
有两件事正在发生.
C中的默认数据类型为int.因此,您有signed int和unsigned int类型的变量.
当在表达式中使用unsigned int和signed int时,在计算表达式之前,signed int将转换为unsigned.这将导致signed(-1)变成一个非常大的无符号数(由于2的补码表示).
| 归档时间: |
|
| 查看次数: |
1460 次 |
| 最近记录: |