c语言中字符变量赋值问题

do{eat}while(live); 2019-03-30 09:00:36
比如:char p ='abcd';printf("p = %c", p) 为什么可以打印出p的值为d 再有如果是char p = 'abcde';printf("p = %c", p) 这样会出错说p后边的赋值太大了(就是超过四个字符)
...全文
1464 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
我回答一下第一个问题,比方说c语言中char类型一般是一个字节,系统只会查看后8位,所以p是d;
自信男孩 2019-04-01
  • 打赏
  • 举报
回复
p是字符变量不是字符串指针或数组。因此char p = 'abcd';这样赋值是有问题的,''是表示一个字符,既然是问题的赋值操作,结果可能是未定义的。
刘蕘 2019-03-31
  • 打赏
  • 举报
回复
char类型理论上也是int类型,因为接受的是ASCII码,char a ='abc', 就是在反复把一个int的值(97,98,99)赋给a,只会警告你,但是不算语法错误
  • 打赏
  • 举报
回复
引用 3 楼 秦帅的回复:
这道题多处错误,字符串应该用“ ”,字符用单引号,双引号框起来的字符串代表地址,
定义的p是一个字符变量,就是单引号里边本应该只有一个字符,但是放了多个字符也可以编译运行通过,自动取最后一个字符给了p
  • 打赏
  • 举报
回复
引用 2 楼 hu421160052的回复:
1.%c是字符输出
2.''这种符号是单个字符,a,b,c,d,e都算一个字符,但是如果连在一起,就是字符串,附值应该是用char *p或者是char p[5]
为什么单引号里边放了多个字符也可以编译通过,然后把最后一个字符赋值给字符变量p
秦帅 2019-03-30
  • 打赏
  • 举报
回复
这道题多处错误,字符串应该用“ ”,字符用单引号,双引号框起来的字符串代表地址,
hu421160052 2019-03-30
  • 打赏
  • 举报
回复
1.%c是字符输出
2.''这种符号是单个字符,a,b,c,d,e都算一个字符,但是如果连在一起,就是字符串,附值应该是用char *p或者是char p[5]
  • 打赏
  • 举报
回复
有大神解释下吗,今天突然碰到这个类型题

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧