2 回答

TA贡献1797条经验 获得超6个赞
首先要说明的两点是:
C++提供了cin和cout来进行输入输出,不建议再采用C语言中的scanf和printf来输入输出;
如果用scanf和printf输入输出,就要遵循格式规范,不要试图去测试不匹配的情况,你的问题是%ld明明针对的是long类型的数据,你非要用它来接收short类型的变量,这样得到的结果是不确定的,也完全没有意义(因为C语言设计的初衷就是给成熟的程序员使用的语言,认为使用C语言的人都会遵循规范,保证输入输出的正确是C程序员的职责)
接下来回答你的问题,按照你的提问使用格式字符串:
short变量,选用%ld格式字符串通过scanf函数来赋值,结果是未定义的;
只想输出前5个字符,怎么用格式字符串实现,我目前没有办法实现,除非对原始字符串进行处理,取出前五个字符组成子字符串,然后进行输出;
一个16进制数,如果输出时要求有数据前缀怎么处理?用%#X应该就可以了;
scanf函数只能接收%lf,来处理double变量,不能指定格式,格式的指定应该在printf中,而不是scanf中

TA贡献1712条经验 获得超3个赞
1.对于short变量,选用%ld格式字符串通过scanf函数来赋值,结果怎样?
在int整数范围内没有问题,(short与int整数范围相同)
2.如果只想输出前5个字符,怎么用格式字符串实现
形如 printf("%5.5s\n", "12345678"),可输出字串的前5位。
- 2 回答
- 0 关注
- 363 浏览
添加回答
举报