int sales[ 1 ];
do
{
scanf_s("%d", sales, 1);
printf("\n%d\n", sales[ 0 ]);
printf("\nyou got weekly income of $ %d\n\n", commision(sales[ 0 ]));
} while (sales[0] >-1);
我想問,爲什麼我每次輸入INT與空間(例如123 456),輸出是銷售[0] = 123然後突然它會自動分配456銷售[0 ], 你們可以解釋一下爲什麼?輸出突然分開int與空間
我看到....但爲什麼規則不適用於字符類型(例如,我輸入ab [空格] d輸出只有銷售=「ab」和[空格]之後的字符串刪除? 和一個更多的事情我仍然感到困惑,編譯器在哪裏存儲456?因爲首先他將123分配給銷售[0],並且沒有剩餘變量用於存儲456 ....在完成第一個循環後,它執行第二個循環( scanf語句),爲什麼scanf突然得到456?從哪裏來的?糾正我,如果我worng –
你是什麼意思「適用於字符類型」?如果你的變量的類型爲'字符'銷售[1]'),你正在做'scanf_s(「%d」,sales,1)''然後'scanf_s'仍然會將輸入解釋爲一個有符號的整數,這意味着只要你發送eg一個空格或換行符輸入將被解析,並且輸入的所有字符形成一個有效的帶符號整數將被「放入」變量(這裏是'sales') - 所有尾隨的將被忽略(輸入'42ab' ='42 '。如果(就像我上面的例子中)'sales'的類型是'char',讀取的整數將是8位而不是32位(大多數是'int's)或64位。 – mxscho
編譯器在這裏什麼都不做。這一切都是在程序運行時發生的,在do'while'scanf_s'的第二次執行中,*替換了'sales [0]'中的值 - 所以'123'被替換爲'456'。 – mxscho