2017-10-11 58 views
-1

所以,我正在練習函數循環等,我堅持這樣做。我很初學編程,但我搜索了很多,這讓我學習真正快點。 (通過我試過我的代碼,以檢查是否從用戶輸入的是數字還是沒有辦法的辦法。)我如何讓我的代碼說「你不能分爲0」

printf("Define numbers.\n"); 
     printf("Select: "); 
     scanf("%d", &x); 
     printf("Select: "); 
     scanf("%d", &y); 
     if (y = temp) 
     { 
      printf("Division of something by 0 is undefined.\n"); 
     } 
     else 
     { 
      printf("Division of %d and %d is %d\n", x, y, div(x, y)); 
     } 

所以我宣佈臨時= 0我認爲它會做的伎倆,但它沒有。

+6

你確定你不是指'if(y == temp)'? ('=='而不是'=') –

+0

'='是賦值,而不是'=='這是比較。你說'temp = 0',所以你真正在做的是'if(y = temp)' - >'if(y = 0)' - >'if(0 = 0)' - >'if (0)'這是錯誤的,所以'else'分支執行。雖然魔術數字通常是皺眉,但這種情況是個例外。如果這是你唯一使用的temp,那麼在做'int temp = 0;'和'if(y == temp)'時不會獲得任何結果。也可能只是做'if(y == 0)'。 – yano

回答

1

當你做y = temp你給Ÿ溫度的值,在這種情況下,0在C其轉化爲false邏輯值

你想要做什麼是

if (y == temp)

==運算符測試兩個變量之間的相等性

+2

0轉換爲'false',而不是'true',這就是爲什麼當temp爲0時它不會進入if語句。 –

+0

已更正,謝謝 –

+0

'temp'在此不必要,amd可能是OP的一部分解決問題。值得注意的是,如果習慣性地使用文字零並將其置於左側,編譯器可以捕獲錯誤:即if(0 == y)',因爲if(y = 0)'將編譯但很少正確,而'if(0 = y)'將無法編譯。 – Clifford