|
|
检测点12-6
1.下面的代码片段打印输出什么?
printf("[%5d]\n", 225);
printf("[%-5d]\n", 225);
printf("[%05d]\n", 225);
printf("[%+5d]\n", 225);
printf("[%#10.3f]\n", 56.78);
printf("[%-10.3s]\n", "hello");
printf("[%%]\n");
答案:
[ 225]
[225 ]
[00225]
[ +225]
[ 56.780]
[hel ]
[%]
2.在主流的计算机上,字节的宽度是8比特。以下代码会打印输出什么?为什么?
printf("%hhu\n", (signed char) 127 + 129);
答:
129的类型是int。127从signed char提升为int。相加的结果是int类型的256并传递给printf函数。
printf函数的转换说明是%hhu,这是将int/unsigned int类型的参数转换为unsigned char之后打印输出。所以是将int类型的256转换为unsigned char输出。因指定字节的宽度为8比特,最大值是255,所以256转换为unsigned char类型后的值是255+1-256=0。打印0。
|
|