为什么这个c程序在十进制值后打印%?

时间:2016-07-23 14:49:46

标签: c printf output sizeof

为什么这个程序打印4%而不是4?

#include <stdio.h>
int main() {
    printf("%lu", sizeof(int));
    return 0;
}

3 个答案:

答案 0 :(得分:1)

首先,sizeof运算符会生成类型为size_t的结果。您应该使用%zu格式说明符来打印结果。

使用错误的格式说明符(格式说明符的参数不匹配)会调用undefined behavior

那就是说,输出后你没有打印换行符,所以你只需要在输出后立即返回shell提示符

答案 1 :(得分:1)

此程序仅打印4

之后你可能会得到一个shell提示符(%)。

理想情况下应该是

 printf("%zu\n", sizeof(int));//zu is the right format specifier for  object of type size_t

注意我已经在下一行添加了\n来获取shell提示符。

答案 2 :(得分:0)

它只是打印4.

结果 Codepad