请教CSAPP中的一个题目
CSAPP第二章2.45
编写一个过程int_size_is_32(),当在一个int是32位机器上运行,返回1,期其余情况返回0
下面是一个错误的尝试
int bad_int_size_is_32()
{
int set_msb=1<<31;
int beyond_msb=1<<32; //warn:
return set_msb && !beyond_msb;
}
Note: set_msb is nozero when word size is >=32 and beyond_msb is zero when word size<=32
在SUN SPARC这样的32位机器上编译运行结果返回0
其中编译器Warn: left shift count >= width of type
问: 1. 代码在哪个方面没有遵守C的标准
2. 正确的写法