簡體   English   中英

C語言中scanf的變體

[英]variations in scanf in C language

scanf("%d %d"+2, &a, &b);
printf("%d\n%d", a, b);

它只接受a並打印a0
誰能解釋為什么會這樣? 另外,如果我寫+1而不是+2 ,它不接受任何內容並打印00

這個:

scanf("%d %d"+2,&a,&b);

是相同的

scanf(" %d", &a, &b);

這與

scanf("%d", &a, &b);

這意味着額外的&b參數是不必要的。

這里發生的是"%d %d"是一個char* 將兩個添加到它會產生一個指向前面兩個字節的指針,這意味着它現在指向" %d" 前導空格是不必要的,因為%d已經跳過前導空格字符。


當您使用+1而不是+2scanf

scanf("d %d", &a, &b);

這意味着它期望輸入中的d后跟一個整數分配給a 由於您在輸入中提供了一個數字而不是d ,因此scanf失敗並返回 0。因此,沒有任何東西被接受並且執行到達printf ,它打印了ab的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM