数字的大小

Plu*_*ler 0 c

问题:确定用户输入的pos,neg和0的数量.

c中的代码:

#include <stdio.h>

void main() {
    int pos, neg, zero = 0 ;
    char x[7] ; 
    int num = 0 ;
    printf("\nPress Q to quit anytime");
    while( printf("\n") , gets(x)) {
        num = atoi(x) ;
        if( !strcmp(x , "Q")) break ;
        if( num > 0) pos++ ;
        else if (num < 0) neg++ ;
        else zero++ ;
    }
    printf("\nPos nos: %d \tNeg nos: %d \tZeros: %d", pos, neg, zero);
}
Run Code Online (Sandbox Code Playgroud)

在这里,虽然正数和负数被正确计算,但积极却不是.它总是显示正数,偏移量为4196240,即如果有4个正数,则显示4196244.

关于4196240怎么这么特别?为什么会显示这个?

Rya*_*ing 6

您需要初始化所有计数变量.您的声明仅初始化zero,离开posneg未初始化.

int pos = 0, neg = 0, zero = 0 ;
Run Code Online (Sandbox Code Playgroud)

关于4196240怎么这么特别?为什么会显示这个?

当你没有初始化它时恰好是那个值,没有什么特别之处,它是一个垃圾值.

  • 更具体的是,未初始化的本地非静态变量具有*indeterminate*值,并且使用它们(除了初始化它们之外)会导致*未定义的行为*. (4认同)