level 7
水镜Q
楼主
之前听一个8u说,scanf用%d会读入四个字节,会破坏了short类型的两个字节,那这样,为什么每次最后的那一个还是
正确的
(如图) 。
当我问别人上述问题时,他说:“%d 的d 代表10进制的意思,他与几字节无关。”,他反驳了那位8u的观点,但他并没有给我解释我的问题(从头开始,为什么不能正确输出)
下面讲述下我的想法:如果做对照的话,将short类型换成int类型就能正常输出,声明和打印应该不会有问题,那就是输入这个环节产生了问题,&是必须的,那只能是%d有问题,正好没有专门为short类型创造对应的转义字符,所以别人说的“scanf用%d会读入四个字节,破坏了short类型的两个字节”这句话使我信服,
关键的问题是既然有问题就应该都有问题,怎么还有一个能正确输出,我试过几次,每次都是最后一个能正确输出



2022年08月13日 10点08分
1
正确的
(如图) 。
当我问别人上述问题时,他说:“%d 的d 代表10进制的意思,他与几字节无关。”,他反驳了那位8u的观点,但他并没有给我解释我的问题(从头开始,为什么不能正确输出)
下面讲述下我的想法:如果做对照的话,将short类型换成int类型就能正常输出,声明和打印应该不会有问题,那就是输入这个环节产生了问题,&是必须的,那只能是%d有问题,正好没有专门为short类型创造对应的转义字符,所以别人说的“scanf用%d会读入四个字节,破坏了short类型的两个字节”这句话使我信服,
关键的问题是既然有问题就应该都有问题,怎么还有一个能正确输出,我试过几次,每次都是最后一个能正确输出





