Printf函数的参数

4
#include <stdio.h>

int main()
{
    printf(5 + "abhishekdas\n") ;
    return 0 ;
}

程序的输出是 hekdas。它是如何工作的?难道不应该显示错误吗?如何在 printf 函数中写类似于 5 + "abhishekdas" 的内容?


1
你期望出现什么样的错误? - effeffe
@effeffe 我想知道如何将整数添加到字符串中。 - abkds
如何在printf函数中编写类似于5 +“abhishekdas”的内容?-您只需使用文本编辑器并键入printf(5 +“abhishekdas”)。就这么简单。至于为什么它有效:加法是可交换的,因此5 +“string”“string”+ 5相同,这是简单的指针算术。同样,5 [“foobarbaz”]也可以工作,原因相同。重复数百次。 - The Paramagnetic Croissant
2个回答

8
5+"abhishekdas\n"  ==> "abhishekdas\n"+5 ==> &"abhishekdas\n"[5] ==> "hekdas\n"

4

5+"abhishekdas"

等同于 &"abhishekdas"[5],它是数组的第六个元素的地址。

"abhishekdas" 是一个字符串字面量:它的类型是一个数组类型。和每个数组对象一样,在表达式中求值时会转换为指针类型。因此,5+"abhishekdas" 就是简单的指针运算。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接