#include <stdio.h>
int main()
{
printf(5 + "Good Morning\n");
return 0;
}密码上印着早安。代码应该打印Morning,还是应该显示未定义的行为?
发布于 2014-01-22 18:09:56
应该是“早上好”。
您正在使用指针算法--尽管您似乎不知道!"Good Morning\n"是指向常量字符串的char *指针。然后将5添加到此指针中,将其向前推进5个字符。因此,指针现在指向‘早上’的'M‘。
发布于 2014-01-22 18:11:53
代码是正确的,因为printf定义为:
int printf ( const char * format, ... );根据指针,算术5 + "Good Morning\n"是指向"Morning\n"的第一个元素的指针。所以声明:
printf(5 + "Good Morning\n");其结果与:
printf("Morning\n");解释:
|G|o|o|d| |M|o|r|n|i|n|g|\n|
^ ^
| |
"Good Morning\n" >---- |
+ |
5 >----------------------https://stackoverflow.com/questions/21290605
复制相似问题