
因为你定义的n是INT类型的,所以输出n%10后,它执行n=n/10,正因为N是INT类型的,所以N/纳睁10是取整数部分的,如果N=13,那么N/10=1
当你输入小于0的N时,它不满足WHILE条件,所以一次都不循环
当你输入大于0的N时,它才开始循环,一旦N小于10了,它就跳出循环了
因为N小于10,那腔姿么它除以10的结果的整数部分一定为0,就不满足WHILE的条件了
现在懂了吗?
scanf( "%4c%4c", &c1, &c2 )它的作用是滑迟派把你输入的前4个字符放入地址&c1, 再把旦陪后4个字符放入地址&c2
因为c1 c2本身都只占一个字节, 你放如4个字节, 会造成内存益处。 最后你可能看到正确结果, 也可能得到错误结果。。
比如输入
abcd7890
可能得到:(可能性不大信贺)
a 7
也可能得到:(最有可能)
8 7
(因为c1 c2是连续地址, 第二次把8放如了c1)
总之应避免这样使用scanf
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)