C语言short int输入输出问题

C语言short int输入输出问题,第1张

都一样的,都用%d 答案补充 可以的啊。我这边可以,你要不把程序贴出来。 答案补充 这与你的输入有关,比如m比较大的话一直要循环着输入;
你可以调试程序;比如加入语句printf(“n=%d,m=%d”,n,m);在输入n,m后面,是有结果的
再加printf(“u=%d,v=%d”,u,v);在输入u,v后面,也是有结果的
证明%d没有错误

%x对应的是int类型
所以 用%x默认会把参数转为int
而-2转为int, 值不变, 16进制值为0xfffffffe
unsigned short 赋值为-2的时候, 会根据-2的补码,转为对应的无符号值,也就是65534
用%x输出时,还是转为int 值还是65534, 所以会输出fffe

不要这样做,这是未定义行为

参考资料:

网页链接

C 标准及POSIX 指定 sprintf 及其变体的行为在参数与目标缓冲区重叠时未定义。示例:

sprintf(dst, "%s and %s", dst, t); // <- 有错:未定义行为

输出无符号应该用: %u 或 %lu 或 %Lu (对应int、long, long long)
输出16进制用: %x 或 %lx 或 %Lx (对应int、long, long long)
%h似乎没有定义。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13405545.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-30
下一篇 2023-07-30

发表评论

登录后才能评论

评论列表(0条)

保存