C++中出现switch quantity not an integer是什么问题?

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
main()
{
int x,y;
scanf("%d",&x);
switch(x)
{
case 1:((0<x)&&(x<100));printf("x+1==y\n");
case 2:(100<=x)&&(x<200);printf("x-1==y\n");
case 3:(x>=200);printf("y==-1\n");
}
printf("%d%d\n",&x,&y);
system("pause");
}为什么编译成功了,而运行结果却不对

switch quantity not an integer -- 开关语句 控制量必须是整型
例如 switch(x), 如果 你用 float x, 就会得到这个错误信息。
-----
运行结果对不对,不单要看语法,还要看语义,看任务要求。
printf("%d%d\n",&x,&y); -- 如果你的目的就是检查 变量 x,y 的地址,前面的计算语句要不要都没关系,都能正确输出 它们的地址。
编译成功,只说明语法没问题。
------
case 语句,没有包含所有 情况,通常要写 default: 时,如何处理。
case 语句 不带 break; 则 入口没问题,出口有问题。
程序中 y 没赋值。
-------
随便改了一下,让计算略有意义:
main(){
int x,y=999;
scanf("%d",&x);
switch(x)
{
case 1:((0<x)&&(x<100));printf("x+1==y\n"); y=x+1;break;
case 2:(100<=x)&&(x<200);printf("x-1==y\n"); y=x-1;break;
case 3:(x>=200);printf("y==-1\n"); y=-1; break;
default: printf("Not case 1 2 3\n"); break;
}
printf("%d %d\n",x,y); // 输出 x,y 的值
system("pause");
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-20
switch case分支语句中,switch(a) 这个a必须是整形数据
可以是char, short, int, long, long long以及他们的无符号类型
但不能是float double等非整形数据追问

请返回问题,看一下补充好吗

追答

想知道你case里面:((0<x)&&(x<100));
这个是想达到什么效果?
我估计你是想让x在这个范围内进入到case 1 的分支吧
这个是做不到的
要做到这样的范围,必须用if else
switch case语句是严格的等于判断
对于你现在的这个程序代码,当输入为1/2/3时,分别进入case 1/2/3三个分支
而剩余的三个判断,则不会起到任何作用

顺便提醒一下
printf("%d%d\n",&x,&y);
这个打印也有问题,这个是打印x y的地址,要想打印x y的值,需要去掉&符号
printf和scanf是不同的

第2个回答  2013-07-20
case后面要加上break
第3个回答  2013-07-20
呵呵 、、这程序 很有个性、、、
第4个回答  2013-07-20
switch语句不完整,具体的具体看追问

请返回问题,看一下补充好吗

追答

要求什么

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网