问题:确定用户输入的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);
}
在这里,尽管正确计算了负数和零数,但积极却不是。它总是显示正数,偏移量为4196240,即如果有4个正数,则显示4196244。
关于4196240这么特别吗?为什么会显示这个?
答案 0 :(得分:6)
您需要初始化所有计数变量。您的声明仅初始化zero
,pos
和neg
未初始化。
int pos = 0, neg = 0, zero = 0 ;
关于4196240这么特别吗?为什么会显示这个?
当你没有初始化它时恰好是那个价值,没有什么特别之处,它是一个垃圾值。