社区
C语言
帖子详情
对于char a = 0x123456;这种情况,C/C++语法是怎样规定的?
My_Love
2012-07-25 09:06:56
a == 0x56? or 未知?
...全文
260
7
打赏
收藏
对于char a = 0x123456;这种情况,C/C++语法是怎样规定的?
a == 0x56? or 未知?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
My_Love
2012-07-25
打赏
举报
回复
[Quote=引用 2 楼 的回复:]
就是溢出,但结果必然0x56这跟大小端没关系
[/Quote]
有法定依据没?
赵4老师
2012-07-25
打赏
举报
回复
不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!
不要写连自己也预测不了结果的代码!
Corner
2012-07-25
打赏
举报
回复
常量值截断~留下0x56,相当于类型转换。
int a = 0x123456;
char b = (char)a;
nice_cxf
2012-07-25
打赏
举报
回复
就是溢出,但结果必然0x56这跟大小端没关系
图灵狗
2012-07-25
打赏
举报
回复
未知,CPU有大小端的差异,根据不同的字节存储顺序会有不同。
nice_cxf
2012-07-25
打赏
举报
回复
[Quote=引用 6 楼 的回复:]
显然没有依据。
引用 5 楼 的回复:
引用 2 楼 的回复:
就是溢出,但结果必然0x56这跟大小端没关系
有法定依据没?
[/Quote]
这个还用找什么依据?有大端的系统自己测试以下不就知道了?
数据溢出截断而已,和cpu编译器有什么关系?如果是short必然0x3456
图灵狗
2012-07-25
打赏
举报
回复
显然没有依据。
[Quote=引用 5 楼 的回复:]
引用 2 楼 的回复:
就是溢出,但结果必然0x56这跟大小端没关系
有法定依据没?
[/Quote]
C-Free 4.1 功能加强版本【附带注册代码】
C-Free 4.1: C-Free是一款支持多种编译器的专业化C/
C++
集成开发环境(IDE)。利用本软件,使用者可以轻松地编辑、编译、连接、运行、调试C/
C++
程序。C-Free中集成了C/
C++
代码解析器,能够实时解析代码,并且在编写的过程中给出智能的提示。C-Free提供了对目前业界主流C/
C++
编译器的支持,你可以在C-Free中轻松切换编译器。可定制的快捷键、外部工具以及外部帮助文档,使你在编写代码时得心应手。完善的工程/工程组管理使你能够方便的管理自己的代码。 主要包含如下特性: 支持多编译器,可以配置添加其他编译器; 目前支持的编译器类型: (1) MinGW 2.95/3.x/4.x/5.0 (2) Cygwin (3) Borland
C++
Compiler (4) Microsoft
C++
Compiler (5) Open Watcom C/
C++
(6) Digital Mars C/
C++
(7) Ch Interpreter 增强的C/
C++
语法
加亮器,(可加亮函数名,类型名,常量名等); 增强的智能输入功能; 可添加语言加亮器,支持其他编程语言; 可添加工程类型,可定制其他的工程向导; 完善的代码定位功能(查找声明、实现和引用); 代码完成功能和函数参数提示功能; 能够列出代码文件中包含的所有符号(函数、类/结构、变量等); 大量可定制的功能: 可定制快捷键 可定制外部工具 可定制帮助(可支持Windows帮助、Html帮助和在线帮助); 彩色、带
语法
加亮打印功能; 在调试时显示控制台窗口; 工程转化功能,可将其他类型的工程转化为C-Free格式的工程,并在C-Free中打开。 注册代码: #include
#include
#include
char
*strrev(
char
*s,
char
*t); /* 倒序输出*/ int main(int argc,
char
*argv[]) { unsigned long Machinecode, x, y;
char
RegistryCode[20], MiddleCode[20]; int i; /*Machinecode = 3505625557; */ printf("Please input your Machinecode:"); scanf("%u", &Machinecode); Machinecode ^= 0x90909090; x = Machinecode / 0x25; y = Machinecode % 0x25; y += (y<0x11)?0x11:0; i = 1; while (Machinecode) { unsigned long code; code = Machinecode % y; Machinecode = Machinecode / y; code += (code<=0xA)?0x30:0x157; // printf("%d:x is %X, y is %c \n", i, Machinecode, code); MiddleCode[i-1] = code; i++; } MiddleCode[i-1] = '\0'; printf("Your RegistryCode is %s \n", strrev(RegistryCode, MiddleCode)); return 0; }
char
*strrev(
char
*s,
char
*t) {
char
*r = s; t += strlen(t); while (*s++ = *--t) { ; } return r; }
初谈如何从汇编转向PICC
因为HIDE-TECH PICC 破解版很多,所以HIDE PICC 有比其它PICC 有更多的用户,虽然 它的编译效率不是最好。最好的是CCS,但没破戒版。。。,不过用HIDE PICC 精心安排函数 一样可以获得很高的编译效率,还是人脑是第一的。
第十二天(指针练习)
/解释为p = p + 2 * (sizeof(*p)) = p + 8 = 0x1238 + 8 = 0x1240。//解释为 q = q + 2 * (sizeof(*q)) = 0x1358 + 2 = 0x135a。//这个时候编译器会将其解释为 p = p + 1 * (sizeof(*p)) = p + 4。//解释为 t = t + 1 * (sizeof(*t)) = 0x3456 + 8 = 0x345e。//解释为 q = q + 1 * (sizeof(*q)) = 0x1358。
C/
C++
:基本
语法
看这一篇就够了
一、认识C语言 1、C语言的演化历程 可表示为:01-》汇编-》C语言 (1)硬件电路只能表示0、1两个状态,因此最开始编程时,使用的是0101010110101...进行表示,当要做加法时,可以用特定序列(如010101来标识),而对于不同的硬件电路,会有不同的表示方法,因此需要根据硬件电路来定义,并在编程时查表。 (2)当表示加法的硬件电路统一标准后,那么特定序列就会固定下来,这时候人们使用ADD这样的标志来表示特定序列,即使用指令方式来表示,这样就形成了很多指令集,形成汇编语言。 (3)基于
128在c语言中的长度,
char
c=128;printf("%d",c);问题
一、文章来由同属计算机储存,补码问题的延生~~二、解密答案输出是-128,为什么呢?
char
型变量c中存储的是128的补码:10000000。上一篇文章已经说到,对于计算机来说,存储的都是数据的补码。赋值给
char
型,debug模式下反汇编如下:
char
c = 128;00C6446E mov byte ptr [c],80h
char
cc = c;00C64472 mov ...
C语言
70,026
社区成员
243,244
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章