【求助】char a=“72”赋值一个字符串为什么输出等于28

bluestar2009 2018-03-01 11:48:17
char a="72";
输出等于28

28 Press any key to continue
...全文
517 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2018-03-01
  • 打赏
  • 举报
回复
楼主的表达式在我的编译器下是通不过的。 char a = “72”;该表达式是将"72"的首地址赋值给a,因此建议看一下"72"的首地址是多少,另外,再计算一下首地址的低位1字节的值是不是28
真相重于对错 2018-03-01
  • 打赏
  • 举报
回复
引用 3 楼 bluestar2009 的回复:
[quote=引用 1 楼 hdt 的回复:] char a[3]="72"; printf("%s",a);
不是 我知道是这样不对 只是想知道为什么是28 [/quote] 你用什么编译器?输出代码又是怎样的? 还有,你的代码在要求比较严格的编译器上是错误的
bluestar2009 2018-03-01
  • 打赏
  • 举报
回复
引用 1 楼 hdt 的回复:
char a[3]="72"; printf("%s",a);
不是 我知道是这样不对 只是想知道为什么是28
paschen 2018-03-01
  • 打赏
  • 举报
回复
双引号是字符串,而不是字符

赋值字符串实际得到的是指向这个字符串的指针的值,又由于char表示的范围有限,得到的是转换为char类型的结果,并不是你期望的72
真相重于对错 2018-03-01
  • 打赏
  • 举报
回复 1
char a[3]="72"; printf("%s",a);
flying_music 2018-03-01
  • 打赏
  • 举报
回复
"72"在C语言中属于字符串常量,在char a="72"的上下文环境中,a存储的“72”在字符串常量区的地址,但由于宽度不够,只是存放了最低位一个字节的内容,你的机器正好是28,这样的代码编译器应该会给出告警或干脆编译不过的
赵4老师 2018-03-01
  • 打赏
  • 举报
回复
理解讨论之前请先学会如何观察! 计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构…… 对学习编程者的忠告: 多用小脑和手,少用大脑、眼睛和嘴,会更快地学会编程! 眼过千遍不如手过一遍! 书看千行不如手敲一行! 手敲千行不如单步一行! 单步源代码千行不如单步Debug版对应汇编一行! 单步Debug版对应汇编千行不如单步Release版对应汇编一行! 不会单步Release版对应汇编?在你想单步Release版C/C++代码片断的前面临时加一句DebugBreak();重建所有,然后在IDE中运行。(一般人我不告诉他!) VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。 对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。 http://edu.csdn.net/course/detail/2344 C语言指针与汇编内存地址-一.代码要素 电脑内存或文件内容或传输内容只是一个一维二进制字节数组及其对应的二进制地址; 人脑才将电脑内存或文件内容或传输内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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