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

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条)

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!