Solo_travele 2023-08-10 10:11 采纳率: 100%
浏览 5
已结题

关于#c语言#的问题

初学C语言
这里printf("%d\n,sizeof(long)");
和printf("%d\n",sizeof(long));
下面的内容我明白,上面的话可以正常执行,执行后弹出来一串随机数字以及,printf("%d\n,sizeof(long)");
想知道什么原理,谢谢了。

  • 写回答

5条回答 默认 最新

  • 小周不想卷 优质创作者: 前端开发技术领域 2023-08-10 10:27
    关注

    第一个printf函数调用的格式化字符串是"%d ,sizeof(long)"。其中"%d"是一个占位符,表示将要输出的是一个整数。" "是一个转义字符,表示换行。",sizeof(long)"是一个普通的字符串,其中的sizeof(long)是一个C语言的运算符,用于获取long类型的字节大小。

    这个printf函数调用的结果是输出字符串"%d ,sizeof(long)",而不是你期望的输出具体的值和long类型的字节大小。这是因为printf函数会将格式化字符串中的占位符和后面的参数进行匹配,并将匹配到的参数替换到对应的占位符位置上。但是在这个例子中,占位符后面紧跟着的是一个逗号,而不是一个具体的参数。因此,printf函数会将整个",sizeof(long)"字符串作为一个参数进行输出,而不会将sizeof(long)的结果替换到占位符"%d"的位置。

    第二个printf函数调用的格式化字符串是"%d ",其中"%d"仍然是一个占位符,表示将要输出的是一个整数。而后面的sizeof(long)是一个表达式,用于求取long类型的字节大小。在这个printf函数调用中,sizeof(long)的结果会被计算出来,并替换到占位符"%d"的位置上,最终输出long类型的字节大小。

    因此,第一个printf函数调用输出的是字符串"%d ,sizeof(long)",而第二个printf函数调用输出的是具体的long类型的字节大小。

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

报告相同问题?

问题事件

  • 系统已结题 8月18日
  • 已采纳回答 8月10日
  • 创建了问题 8月10日