簡體   English   中英

C - Printf 不輸出預期結果

[英]C - Printf doesn't output the expected result

我是一名大學生,我正在嘗試通過以下代碼驗證不同的 printf 輸出:

#include <stdio.h>
int main()
{
    int i=3,j=0;
    float x=5,y;
    printf("1: %d\n", i);  
    printf("2: %d\n", i/j);
    printf("3: %d\n", i*i);
    printf("4: i = \n");   
    i=i + j;               
    printf("6: %f\n", x/y);
    printf("7: x = %f\n"); 
    printf("8: %d\n", i/2);
    printf("9: %f", x/2) ; 
    return 0;
}

在執行階段,第一次輸出之后printf("1: %d\\n", i); ,我在終端什么也沒得到。 任何的想法? (沒有編譯錯誤)

i / j3 / 0 ,C 中整數除以 0 是未定義行為,這意味着實際上任何事情都可能發生。 在您的情況下,“幾乎任何事情”都意味着“ 回到過去並使之前的printf不起作用,然后崩潰”(這實際上是由於緩沖的工作方式而發生的,但這只是一個實現細節)。

你期望得到printf("2: %d\\n", i/j); i = 3j = 0

您是否看到您的程序可能會在此時中斷的原因?

后續問題:

你期望從這些行得到什么輸出?
逐一解釋原因!

printf("6: %f\n", x/y);
printf("7: x = %f\n"); 
printf("9: %f", x/2) ; 

由於您提供了答案,因此前兩個期望是錯誤的。

printf("6: %f\n", x/y); <-- "y" as you said is not declared, so I suppose to have a random float number.

y聲明,但未初始化。
除以一個未初始化的值,實際上會產生一個未知的值。
但是根據規范,它是未定義的行為,任何事情都可能發生。


printf("7: x = %f\n"); <-- this is one other question, because the terminal gives me a random value either.

因為您沒有提供進入%f插槽的參數,所以這是未定義的行為,您可能會遇到 Nasal Demons。

暫無
暫無

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

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