现有scanf("%3c%3c",&c1,&c2");这样的语句,
当从键盘上输入123456后c1,c2的值为多少,
为什么会是5和4。
应该是c1='123',c2='456'
c1='1',c2='4'
c1='3',c2='6'
c1=123,c2=456
这四个中的一个,具体应该是哪一个
%3c通常应该用在printf中,3用来占位
而如果用在scanf里,那结构就全乱了
针对你这个问题,我是确实没搞明白编译器是怎么取的值,但是我改了几个参数测试
scanf("%c%c",&c1,&c2);值是1,2
scanf("%3c%c",&c1,&c2);得到1,4
scanf("%c%3c",&c1,&c2);得到3,2
如果把char c1,c2;改为char c2,c1,那么 scanf("%3c%3c",&c1,&c2);得到1,4
c1和c2是两个char,所以c1=123,c2=456这是不可能的,都超过ascii码的表示范围了
c1='123',c2='456'这也不可能,一个char里只能放一个字符,不能放3个字符
因为你声明c1 c2这两个变量时,c1在前面,c2在后面,c1地址比c2靠后,而你是%3c,所以123的首位1给了c1, 456的首位4给了c2,5给了c2后的地址即c1,所以相当于此时c1由数1变成了数5。故最终c1=5,c2=4 更详细的看这里 https://blog.csdn.net/qq_37788575/article/details/123254943
输入用空格隔开