| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6040 人关注过本帖
标题:位运算出现[Warning] multi-character character constant
只看楼主 加入收藏
七夜之华
Rank: 3Rank: 3
来 自:China
等 级:论坛游侠
威 望:5
帖 子:82
专家分:103
注 册:2014-9-7
结帖率:100%
收藏
已结贴  问题点数:30 回复次数:16 
位运算出现[Warning] multi-character character constant
/* 对于下面提示的警告,网上有说 一般来说,字符里面比如'. '含有空格的话,会提示这个警告,经检查确认没有空格,不过警告依然继续,或者出现下面的页面提示。
图片附件: 游客没有浏览图片的权限,请 登录注册

*/
#include
#include
main()
{
      char c;
      int a,b;
      int n;
      printf("请输入你要运算的第一个数的值:");
      scanf("%d",a);
      printf("\n");
      printf("请输入你要运算的第二个数的值:");
      scanf("%d",b);
      printf("\n");
      printf("\n");
      printf(" 按&即将进入按位与,按|即将进入按位或,按^即将进入按位异或,按~即将进入求反操作,按<<即将进入左移,按>>即将进入右移操作\n");
      printf("请确认你要进行的运算:");
      scanf("%c",c);
      switch(c){
                case '&':printf("运算结果为:",a&b);break;
                case '|':printf("运算结果为:",a|b);break;
                case '^':printf("运算结果为:",a^b);break;
                case '~':printf("运算结果为:",~a,~b);break;
                case '<<':
                     printf("请确认你要左移的位数n:");
                     printf("\n");
                     printf("运算结果为:",a<<n,b<<n);
                     break;
                case '>>':
                     printf("请确认你要右移的位数n:");
                     printf("\n");
                     printf("运算结果为:",a>>n,b>>n);
                     break;
                default :printf("您的输入有误,请重新输入!");
                }
      system("pause");
      
}



[此贴子已经被作者于2015-11-30 11:22编辑过]

搜索更多相关主题的帖子: 网上 include character 
2015-11-30 11:20
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:3 
问题都不在那里,自己再仔细检查代码,老问题老故障了。

授人以渔,不授人以鱼。
2015-11-30 11:22
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:6 
威望5   看样子也是老会员了   怎么会犯取址符这种低级错误

DO IT YOURSELF !
2015-11-30 11:26
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:3 
咦!他的内存3可以write。

能编个毛线衣吗?
2015-11-30 11:30
七夜之华
Rank: 3Rank: 3
来 自:China
等 级:论坛游侠
威 望:5
帖 子:82
专家分:103
注 册:2014-9-7
收藏
得分:0 
回复 3楼 wp231957
感谢批评、

#############################################
##########################################
因为不懂、才要学习、只有学习、才有进步。
2015-11-30 12:23
七夜之华
Rank: 3Rank: 3
来 自:China
等 级:论坛游侠
威 望:5
帖 子:82
专家分:103
注 册:2014-9-7
收藏
得分:0 
回复 4楼 wmf2014
是个问题。

#############################################
##########################################
因为不懂、才要学习、只有学习、才有进步。
2015-11-30 12:23
七夜之华
Rank: 3Rank: 3
来 自:China
等 级:论坛游侠
威 望:5
帖 子:82
专家分:103
注 册:2014-9-7
收藏
得分:0 
回复 2楼 TonyDeng
/* 现在的运行时这样的
图片附件: 游客没有浏览图片的权限,请 登录注册

直接跳转到 default选项了,这是为什么?

*/

#include <stdio.h>
#include <math.h>
main()
{
      char c;
      int a,b;
      int n;
      printf("请输入你要运算的第一个数的值:");
      scanf("%d",&a);
      printf("\n");
      printf("请输入你要运算的第二个数的值:");
      scanf("%d",&b);
      printf("\n");
      printf("\n");
      printf(" 按&即将进入按位与,按|即将进入按位或,按^即将进入按位异或,按~即将进入求反操作,按<<即将进入左移,按>>即将进入右移操作");
      printf("\n");
      printf("请确认你要进行的运算:");
      scanf("%s",&c);
      switch('c'){
                case '&':printf("运算结果为:",a&b);break;
                case '|':printf("运算结果为:",a|b);break;
                case '^':printf("运算结果为:",a^b);break;
                case '~':printf("运算结果为:",~a,~b);break;
                case '<<':
                     printf("请确认你要左移的位数n:");
                     printf("\n");
                     printf("运算结果为:",a<<n,b<<n);
                     break;
                case '>>':
                     printf("请确认你要右移的位数n:");
                     printf("\n");
                     printf("运算结果为:",a>>n,b>>n);
                     break;
                default:printf("您的输入有误,请重新输入!");
                }
      system("pause");
      
}



#############################################
##########################################
因为不懂、才要学习、只有学习、才有进步。
2015-11-30 16:18
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:6 
case '<<':
 case '>>':

这里的单引号里面的  只能是单个字符  而<<  >>则属于字符串系列

DO IT YOURSELF !
2015-11-30 16:21
七夜之华
Rank: 3Rank: 3
来 自:China
等 级:论坛游侠
威 望:5
帖 子:82
专家分:103
注 册:2014-9-7
收藏
得分:0 
回复 8楼 wp231957
嗯,网上确实有这样的答案,不过对于这样的情况,我尝试着用双引号去使用,然而却是失败的。

#############################################
##########################################
因为不懂、才要学习、只有学习、才有进步。
2015-11-30 16:32
七夜之华
Rank: 3Rank: 3
来 自:China
等 级:论坛游侠
威 望:5
帖 子:82
专家分:103
注 册:2014-9-7
收藏
得分:0 
回复 8楼 wp231957
图片附件: 游客没有浏览图片的权限,请 登录注册

对于 case label does not reduce to an integer constant
解释为:案例标签不减少到一个整型常量  即是说 case接收的不能为字符串,应该为单个字符或单个字节常量。

是不是需要这样写:
int c;
// 1代表一种情况,2代表一种情况。。。。。这样写,然后再 case1: 后面的句子中加以实现。
switch(c)
{case 1:
 case 2:
 ...
 default:
}


不过这样有木有很生硬?


#############################################
##########################################
因为不懂、才要学习、只有学习、才有进步。
2015-11-30 16:42
快速回复:位运算出现[Warning] multi-character character constant
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014462 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved