Printf函数参数

时间:2013-09-28 11:17:20

标签: c printf

#include <stdio.h>

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

该计划的输出为hekdas。它是如何工作的?它不应该显示错误吗?怎么可能在5 + "abhishekdas"函数中写printf之类的东西?

2 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:4)

5+"abhishekdas"

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

"abhishekdas"是一个字符串文字:它的类型是数组类型。作为每个数组对象,当在表达式中求值时,它将转换为指针类型。所以5+"abhishekdas"是简单的指针算法。