c中的条件运算符有问题

having a problem with conditional operator in 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);
}

sum 包含一个字符串,它应该定义为 char*,而不是 char.

看来你的意思如下

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*