2016-01-01 69 views
2

我所經歷的C語言程序設計:一種現代方法,來到任務,並聲明在底部的程序,我把它抄了一個字一個字,它不給我預期的輸出:爲什麼我的程序返回錯誤答案的任何解決方案?

#include <stdio.h> 

int main(void) { 

    int height, length, width, volume, weight; 

    height = 8; 
    length = 12; 
    width = 10; 
    volume = height * weight * width; 
    weight = (volume + 165)/166; 

    printf("Dimensions %d x %d x %d\n",length, width, height); 
    printf("Volume (cubic inches) : %d\n",volume); 
    printf("Dimensional weight (pounds) : %d\n", weight); 

    return 0; 
} 

的我從程序獲取輸出是:

Dimensions 12 x 10 x 8 
Volume (cubic inches) : 0 
Dimensional weight (pounds) : 0 
Program ended with exit code: 0 

我在Xcode跑了這一點,它不具有與該程序的任何錯誤,但仍然打印此。關於爲什麼這段代碼不工作的任何解決方案?

+0

是的,我從IDE直接複製 –

回答

7

您不要在表達式中使用它之前volume初始化weight。這會導致未定義的行爲。而且我們認爲您的公式是錯誤的,你應該寫

volume = height * length * width; 

我想。

啓用編譯器警告,你應該避免這種愚蠢的錯誤,不要採取了錯誤的方式,他們是共同的,當你編碼,這就是爲什麼警告消息是如此的幫助。

+0

謝謝,這是我犯的錯誤。 –

+4

是的,也想想你在做什麼的意思。 '體積=身高*體重*寬度;'不可能是正確的。 –

+0

@WeatherVane特別是在使用好變量命名的時候,應該會減少這種問題很多。 –

0

的公式是volume是不正確的。

試試這個:

#include <stdio.h> 

int main(void) { 

    int height = 8; 
    int length = 12; 
    int width = 10; 
    int volume = height * length * width; 
    int weight = (volume + 165)/166; 

    printf("Dimensions %d x %d x %d\n", length, width, height); 
    printf("Volume (cubic inches) : %d\n", volume); 
    printf("Dimensional weight (pounds) : %d\n", weight); 

    return 0; 
} 
+0

不涉及循環依賴!你在說什麼?。如果'weight'在'volume'之前被初始化,這是完全有效的。循環依賴是一個非常不同的概念。 –

+0

這些不都是依靠彼此? 'volume = height * weight * width;''weight =(volume + 165)/ 166;'儘管我明白你的意思,但它仍然有效,只是沒有達到預期的效果。我會修改 –

相關問題