首页 > 解决方案 > 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);
}

标签: cprintfscanfconditional-operatorstring-literals

解决方案


看来你的意思如下

int number;

char *sum;

printf("enter your number ");

scanf("%d",&number);

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

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

那就是变量 number 应该有类型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" );

推荐阅读