0 c++
char sentence[] ={'k','k','k','k','k','k','k','k'}; // (8 character)
std::cout << sentence << std::endl;
Run Code Online (Sandbox Code Playgroud)
那么输出就是kkkkkkkk.
但是如果我们递减数组的字符(即前面的数组在少于 8 个字符之后有 8 个字符)
char sentence[] ={'k','k','k','k','k','k','k'}; // ( 7 character)
std::cout << sentence << std::endl;
Run Code Online (Sandbox Code Playgroud)
输出:
kkkkkkk`\363\277\357\376.
Run Code Online (Sandbox Code Playgroud)
操作数sentence衰减为指向数组第一个元素的指针。接受const char*参数的流插入运算符重载要求指针指向以 null 结尾的数组。如果违反该前提条件,则程序的行为是不确定的。
sentence不包含空终止符。您将其插入字符流中。程序的行为是未定义的。
然后只输出“kkkkkkkk”。
这是一种潜在的行为。无法保证此行为,因为程序的行为未定义。
但如果我们递减数组的长度,则输出 kkkkkkk`\363\277\357\376。
这是一种潜在的行为。无法保证此行为,因为程序的行为未定义。
| 归档时间: |
|
| 查看次数: |
513 次 |
| 最近记录: |