阿萨姆原味 2017-04-07 10:00 采纳率: 66.7%
浏览 905
已采纳

c语言的问题1111111111111111111111111111111

#define N 3+5*2
printf("%d",N+printf("%d",N*N));
printf("%d",N++);
这个怎么输出的呀

  • 写回答

3条回答 默认 最新

  • YuDale 2017-04-07 12:54
    关注

    首先是宏,宏是完全带入的,所以NxN实际上是: 3+5x2x3+5x2
    其次是printf,这是一个函数,里面的数据结构是栈,也就是printf的计算方式是从右向左计算,所以printf("%d",N+printf("%d",NxN));是先输出printf("%d",NxN)这里的结果是43。
    最后是printf的返回值,printf函数的返回值是printf实际控制输出的字符数,例如
    int i=123;
    printf("%d",i),这里返回值是3
    printf("%d",N+printf("%d",NxN));这里打印的字符是43,也就是说字符数是2,所以输出的结果是4315。

    因为用星号会出现莫名其妙的东西,所以用x代替了星号 :)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?