-3
scanf("%d %d"+2, &a, &b);
printf("%d\n%d", a, b);
它接受僅a
並打印a
和0
。
任何人都可以解釋爲什麼會發生這種情況嗎? 此外,如果我寫+1
而不是+2
,它將不接受任何內容並打印0
和0
。變化在scanf C語言
scanf("%d %d"+2, &a, &b);
printf("%d\n%d", a, b);
它接受僅a
並打印a
和0
。
任何人都可以解釋爲什麼會發生這種情況嗎? 此外,如果我寫+1
而不是+2
,它將不接受任何內容並打印0
和0
。變化在scanf C語言
此:
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
的值。