在C中为字符串添加整数,如何理解结果?

Anj*_*mar 0 c string pointers

如何输出结果是早上.

#include<stdio.h>
void main()
{
    printf(5+"Good Morning");
    return 0;
}

output is Morning
Run Code Online (Sandbox Code Playgroud)

Jea*_*bre 6

指针算术:你向char数组位置添加了5 ,跳过了5个第一个字符,即Good空格.

只要您不超过字符串的大小,它就是合法的,在这种情况下,您有未定义的行为

  • @artm:这不是暂时的.与字符串文字关联的匿名数组对象具有静态存储持续时间,这意味着它(在逻辑上)在整个程序执行期间存在. (2认同)
  • http://c-faq.com/aryptr/index.html - 事实上,阅读整个FAQ肯定比尝试在SO评论中学习C更有用. (2认同)