社区
C语言
帖子详情
C语言中关于变量申明和赋值的问题
无敌007
2013-06-19 11:59:01
源代码:
# include <stdio.h>
void main(void)
{
unsigned int x=-666;
printf("\nx=%d",x);
getchar();
}
在Dev-C++下运行的结果为:
x=-666
问题:申明x为一个unsigned int型变量,其最小值为0,但是赋值-666为何没有出错?
...全文
321
6
打赏
收藏
C语言中关于变量申明和赋值的问题
源代码: # include void main(void) { unsigned int x=-666; printf("\nx=%d",x); getchar(); } 在Dev-C++下运行的结果为: x=-666 问题:申明x为一个unsigned int型变量,其最小值为0,但是赋值-666为何没有出错?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Carl_CCC
2013-06-19
打赏
举报
回复
你打印的时候不要用 %d, 用 %u
你怎么了熊吉
2013-06-19
打赏
举报
回复
内存里没有正负之分,负数用的是补码,你给它赋值-666,它的补码就保存在unsigned int里了,但因为它是unsigned的,所以并不知道这是负数,而是视为一个很大的正数 关键在于你输出的时候,用的%d,这个是输出有符号整数的,所以会把这个很大的正数解读为-666的补码,输出的就是-666 你换成%u(输出无符号整数),输出的就是一个很大的正数了
rocktyt
2013-06-19
打赏
举报
回复
-666被编译器当成int,然后int隐式转为unsigned int
www_adintr_com
2013-06-19
打赏
举报
回复
没听说过自动转型么
无敌007
2013-06-19
打赏
举报
回复
感谢各位大大的回复,终于明白是什么意思了!
赵4老师
2013-06-19
打赏
举报
回复
计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构…… 对学习编程者的忠告: 眼过千遍不如手过一遍! 书看千行不如手敲一行! 手敲千行不如单步一行! 单步源代码千行不如单步对应汇编一行! VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。 对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。 (Turbo C或Borland C用Turbo Debugger调试,Linux或Unix下用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。) 提醒: “学习用汇编语言写程序” 和 “VC调试(TC或BC用TD调试)时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。 (Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)” 不是一回事! 不要迷信书、考题、老师、回帖; 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实! 有人说一套做一套,你相信他说的还是相信他做的? 其实严格来说这个世界上古往今来所有人都是说一套做一套,不是吗? 不要写连自己也预测不了结果的代码! 电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址; 人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……
C语言
新手小白详细教程(7)指针和指针
变量
这篇学习笔记是我付出心血撰写的一份关于学习
C语言
的指南,即使是毫无编程基础的人也能通过阅读它来理解编程代码的含义。很高兴与大家交流,共同分享学习心得。
mysql
申明
变量
及
赋值
_mysql
申明
变量
以及
赋值
mysql
申明
变量
以及
赋值
sql server
中
变量
要先
申明
后
赋值
:局部
变量
用一个@标识,全局
变量
用两个@(常用的全局
变量
一般都是已经定义好的);
申明
局部
变量
语法:declare @
变量
名 数据类型;例如:declare @num int;
赋值
:有两种方法式(@num为
变量
名,value为值)set @num=value; 或 select @num=value;如果想获取查询语句
中
的一个...
C语言
结构体能否整体
赋值
C语言
结构体的能否整体
赋值
先放结论 可以将一个结构体
变量
的值赋给另一个具有相同结构的结构体
变量
,但是需要满足一个条件。 整体
赋值
规则 ansi/iso C规定:“相同类型的结构体是可以直接
赋值
的”; 合法
赋值
: 如date1和date2都是date结构体类型的
变量
,可以这样
赋值
:date1= date2; 非法
赋值
: 假设
申明
了两个成员列表完全一样的两个结构体类型(dataA,dateB),即使他们的成员列表是一样的,编译器会当作两个完全不同的类型,令两个结构体类型的
变量
间
赋值
,则是非法的。 但是这种
问题
【Go】Go语言基本语法--注释、
变量
、常量
在Go语言
中
,常量(Constants)是固定不变的值,它们在编译时被确定,并且在程序的整个生命周期内都不会改变。 常量可以是字符、字符串、布尔值或数值(整数、浮点数等)。常量用于提高代码的可读性和可维护性,特别是在定义那些不应该被改变的值时(如配置参数、物理常量等)。
C语言
中
的
变量
&命名规范
C语言
中
的
变量
变量
:顾名思义就是可以变化的量,他可以存任意类型的
C语言
中
的数据。但是他跟常量最大的不同就是,
变量
可以任意修改!
变量
的使用:只有一种方式:
赋值
的方式如:int a = 10; char c = 'a';
变量
的使用注意:
变量
左边
申明
什么类型,右边赋
C语言
70,040
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章