【发布时间】:2012-09-30 09:39:04
【问题描述】:
我的问题是关于缺少参数的 printf 之后的行为:
printf("%s blah blah %d", int); // integer was given as argument (and not int written)
我已经知道,如果格式的参数不足,则行为是 未定义。
问题是对于 printf 结果还是对于整个程序是未定义的?
- 当 %s 尝试从未经授权的内存地址读取时,可能会发生崩溃。 (发生在我身上)
- printf 完成后 [long] 是否会发生崩溃? (打印一些垃圾字符串和一个整数)
编辑:
为了澄清我不是在询问编译错误或警告,执行此行时程序也不会崩溃。问题是这行代码执行完后,程序会不会随机崩溃。
【问题讨论】:
-
未定义的行为可以追溯。未定义行为之前的执行跟踪部分也可能会被搞砸。
-
你的代码sn-p是语法错误;
int是一个类型,不是一个有效的参数。 -
我写了 int 因为它是一个作为参数而不是字符串指针 (char*) 的 int 变量。