c中的条件运算符有问题

问题描述

我正在尝试编写一个程序来确定条件运算符输入的数字是正数还是负数,但是当我输入数字时,程序之后不会打印任何内容

#include <stdio.h>

void main(void)
{    
  char number;   
  char sum;

  printf("enter your number ");
  scanf("%d",&number);

  sum = (number > 0)?  "positive" : "negative";

  printf("your number is %s\n",sum);
}

解决方法

看来您的意思是以下

int number;

char *sum;

printf("enter your number ");

scanf("%d",&number);

sum = (number > 0)?  "positive" : "negative";

printf("your number is %s\n",sum);

也就是说,变量号的类型应为int,而不是char。否则,此呼叫

scanf("%d",&number);

可以调用未定义的行为。

变量sum的类型应为char *而不是char,因为它是由字符串文字初始化的。

请注意,如果number不大于0,并不意味着它是负数。可以等于0。:)

所以这句话

sum = (number > 0)?  "positive" : "negative";

具有逻辑错误。你可以写至少像

sum = (number > 0)?  "positive" : "non-positive";

或使用更复杂的表达式,例如

sum = (number > 0) ?  "positive" : ( number == 0 ? "zero" : "negative" );
,

sum包含一个字符串,应将其定义为char*,而不是char

,

sum是字符类型,您正在尝试在其中保存字符串。在其中保存一个字符或将其声明为char *