#include <stdio.h> int main() { printf(5 + "abhishekdas\n") ; return 0 ; } 程序的输出是 hekdas。它是如何工作的?难道不应该显示错误吗?如何在 printf 函数中写类似于 5 + "abhishekdas" 的内容?
5+"abhishekdas" 等同于 &"abhishekdas"[5],它是数组的第六个元素的地址。 "abhishekdas" 是一个字符串字面量:它的类型是一个数组类型。和每个数组对象一样,在表达式中求值时会转换为指针类型。因此,5+"abhishekdas" 就是简单的指针运算。
printf(5 +“abhishekdas”)
。就这么简单。至于为什么它有效:加法是可交换的,因此5 +“string”
与“string”+ 5
相同,这是简单的指针算术。同样,5 [“foobarbaz”]
也可以工作,原因相同。重复数百次。 - The Paramagnetic Croissant