“printf(”%d“)的行为;”

时间:2015-06-10 09:27:44

标签: c printf

int main(){
    // Comment the next line, Garbage value is printed. However, this shows an integer value. 
    int x=32;
    printf("%d");
    return 0;
}

出现这种行为的原因,还是随意的?

2 个答案:

答案 0 :(得分:3)

您告诉printf()如何打印某些内容(格式说明符%d ),但您没有告诉printf() < 打印。

详细说明,您忘记为提供的格式说明符%d提供所需的参数。

C标准说,如果提供的格式说明符没有足够的参数,behaviour is undefined

FWIW,只需指定格式说明符就不会神奇地考虑它的参数。你需要写一些像

这样的东西
 printf("%d", x);

打印x的值。

答案 1 :(得分:3)

printf()具有以下原型

int printf(const char *,...);

您传递的内容是%dprintf(),因为这是打印出来的格式说明符int printf()查找需要打印的参数你没有通过任何这是未定义的行为