更新:问题已解决,详见一个神奇的C语言程序 - 知乎 (zhihu.com)评论区大佬。(果然还是太菜了……
写代码时为了节省空间,就是用了uint8_t,然后发现一个很神奇的现象,程序很简单,但是现象很神奇:
1 |
|
输入:
1 | 1 15 |
输出:
1 | 0, 15 |
可以看到,对于变量a,不仅没有成功输入,并且初始化的123也没了。
很神奇。。。
同时,如果只输入一个a,是可以正常读入到a中的,读入a和b就不行,即使用两个scanf分开来读。
个人猜测与uint8_t这个类型本身其实是unsigned char类型,以及scanf的%d读入有关(但是感觉用%d读入char型也没毛病呀。。。毕竟单独输入a就可以正常读入。
暂时做一个记录,以后有时间深入研究。
如果有大佬知道是什么原理,请在评论留言!