社区
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为何没有出错?
...全文
208
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
作业
写回复
配置赞助广告
用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语言
程序设计 课后习题.doc
谭浩强
C语言
程序设计 课后习题 电子稿的 配套第三版
C语言
理论判断题&选择题.docx
学长呕心沥血整理的
C语言
理论考试题库,专治各种疑难杂题! 适合C初学者应对理论考试用,亲测好评。 这里面总结了许多平常不怎么会注意到的奇奇怪怪的C用法。 包括各种运算符的优先级这种让人想想就头疼的题目。
(完整版)大学
C语言
考试题库(含标准答案).doc
(完整版)大学
C语言
考试题库(含标准答案).doc
C语言
变量
定义与
赋值
C语言
变量
定义与
赋值
变量
定义
变量
赋值
变量
定义
变量
定义就是告诉编译器在何处创建
变量
的存储,以及如何创建
变量
的存储。
变量
定义指定一个数据类型,并包含了该类型的一个或多个
变量
的列表,如下所示: type variable_list; 在这里,type 必须是一个有效的 C 数据类型,可以是 char、w_char、int、float、double 或任何用户自定义的对象,variable_list 可以由一个或多个标识符名称组成,多个标识符之间用逗号分隔。下面列出几个有效的声明: int i, j,
c语言
中
声明
变量
可以直接
赋值
么,声明、定义、初始化、
赋值
(
C语言
)
声明、定义、初始化、
赋值
(
C语言
)
变量
声明用于向程序表明
变量
的类型和名字。可以通过使用extern关键字声明
变量
名而不定义它。extern声明不是定义,即不分配存储空间。extern告诉编译器:
变量
在其他文件
中
定义了,此处只是引用。如果声明包含初始化表达式,就被当作定义,即使前面加了extern。只有当extern声明位于函数外部时,才可以被初始化externdoublepi=3.1416;...
C语言
70,023
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章