我刚刚注意到printf函数的不同行为,通过更改no.参数和格式说明符.请看下面的代码:
#include<stdio.h>
void main()
{ int ji=65;
printf("ji>=65 ? %d : %c",ji);
}
Run Code Online (Sandbox Code Playgroud)
输出结果是ji> = 65?65:A
打印的字符是A
但是如果代码是:
#include<stdio.h>
void main()
{ int ji=65,y;
printf("ji>=65 ? %d : %c",ji);
printf("%d",y)
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下打印的字符是heart(ascii值3),y的值是12803.
如何通过编译器拾取字符值??? 请帮忙
printf()发布的代码中的调用导致未定义的行为:
printf("ji>=65 ? %d : %c",ji); /* One less argument than required for
the supplied format. */
Run Code Online (Sandbox Code Playgroud)
从第7.19.6.1节开始,C99标准的fprintf功能:
fprintf函数将输出写入stream指向的流,在指向格式的字符串的控制下,该格式指定后续参数如何转换为输出.如果格式的参数不足,则行为未定义.如果参数保留时格式已用尽,则会评估多余的参数(一如既往),否则将被忽略.当遇到格式字符串的末尾时,fprintf函数返回.
此行为也适用于printf()函数(sprintf()和snprintf()函数).
| 归档时间: |
|
| 查看次数: |
1821 次 |
| 最近记录: |