c - 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);
那就是变量 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" );
推荐阅读
- javafx - Java FX TextField 模糊
- asp.net-mvc - 为什么即使在注销后 User.Identity.IsAuthenticated 也始终为真
- php - Laravel 脚本中遇到的非数字值
- json - 语法错误,意外的keyword_end,需要')'
- php - 记录到数据库 BLOB 列长时间运行的 php 脚本的内存有效方式
- google-analytics - 如何在 Google Analytics 中分析多个查询参数
- angular - 角度 github 构建并非所有图像都获取应用程序 URL(和其他内容)
- javascript - 在网页上显示 Discord 服务器成员数?
- python - matplotlib.pyplot.savefig 需要很长时间
- bash - Bash:在单行(作为参数)上获得带空格的文件名的打乱列表?