数据类型转换问题

ANSI C规定:当执行算术运算时,操作数的类型如果不同,就会发生数据转换。数据类型一般朝着浮点精度更高、长度更长的方向转换,整型数如果转换为signed不会丢失信息,就转换为signed,否则转换为unsigned。
#include <stdio.h>
 int main(void)
{
int i=-3;
 if (i<sizeof(int))
printf("aaa\n");
 else
  printf("vvv\n");
 return 0;
 } 
上述代码执行为 vvv,也就是说sizeof返回的值是无符号整型数。而i是int型, 在int与unsigned作比较的时候int型自动变为unsigned类型了。
如果上述代码改为 if (i<(int)sizeof(int)) 那么,输出是aaa。

你可能感兴趣的:(职场,休闲)