#include <stdio.h>
int main()
{
printf(5 + "abhishekdas\n") ;
return 0 ;
}
该计划的输出为hekdas
。它是如何工作的?它不应该显示错误吗?怎么可能在5 + "abhishekdas"
函数中写printf
之类的东西?
答案 0 :(得分:9)
5+"abhishekdas\n" ==> "abhishekdas\n"+5 ==> &"abhishekdas\n"[5] ==> "hekdas\n"
答案 1 :(得分:4)
5+"abhishekdas"
相当于&"abhishekdas"[5]
,它是数组第六个元素的地址。
"abhishekdas"
是一个字符串文字:它的类型是数组类型。作为每个数组对象,当在表达式中求值时,它将转换为指针类型。所以5+"abhishekdas"
是简单的指针算法。