m0_51411058 2022-04-30 02:14 采纳率: 100%
浏览 20
已结题

为什么%s没被赋予垃圾值?

起初是打印字符串“%s! C is cool!\n”时发现%s没有被打印出来,
#include <stdio.h>

#define FORMAT "%s! C is cool!\n"
void main(void)
{
printf(FORMAT);
return 0;
}

img

我的思考过程

我起初分析是因为%s不会产生垃圾值,于是尝试了

img


于是这个想法不成立
之后我根据这个结果再次分析没有产生垃圾值的原因是后面没有对应的类型常量,所以尝试把%s换成了 %d,结果%d居然产生了垃圾值。

img

所以我想要知道%s为什么没被当作字符串中的一部分,也没被赋予垃圾值。
  • 写回答

1条回答 默认 最新

  • 慕雪华年 C/C++领域新星创作者 2022-04-30 10:36
    关注

    你的mian函数是void类型,但是返回了0。不要用void main这种老式写法啦,直接用int main()就可以了

    不同编译器实现不同吧?VS2019打印出了乱码

    img


    包括%d也有

    img


    可以看到编译器下面会报警告,因为你没有给%s和%d传参

    img


    而且因为%不是一个转义字符,当前情况下,你不能把它当作字符串打印出来

    img


    只有把它放入一个真的字符串中,才能被识别并正常打印

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 5月8日
  • 已采纳回答 4月30日
  • 创建了问题 4月30日

悬赏问题

  • ¥15 孟德尔随机化结果不一致
  • ¥20 求用stm32f103c6t6在lcd1206上显示Door is open和password:
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法