[英]variations in scanf in C language
scanf("%d %d"+2, &a, &b);
printf("%d\n%d", a, b);
它只接受a
並打印a
和0
。
誰能解釋為什么會這樣? 另外,如果我寫+1
而不是+2
,它不接受任何內容並打印0
和0
。
這個:
scanf("%d %d"+2,&a,&b);
是相同的
scanf(" %d", &a, &b);
這與
scanf("%d", &a, &b);
這意味着額外的&b
參數是不必要的。
這里發生的是"%d %d"
是一個char*
。 將兩個添加到它會產生一個指向前面兩個字節的指針,這意味着它現在指向" %d"
。 前導空格是不必要的,因為%d
已經跳過前導空格字符。
當您使用+1
而不是+2
, scanf
與
scanf("d %d", &a, &b);
這意味着它期望輸入中的d
后跟一個整數分配給a
。 由於您在輸入中提供了一個數字而不是d
,因此scanf
失敗並返回 0。因此,沒有任何東西被接受並且執行到達printf
,它打印了a
和b
的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.