14 个解决方案
#1
看一下题目 各位带哥
#2
计算机里全是数字
看你如何解析了
char里面存的是数字 但是输出出来就被解析成字符了
看你如何解析了
char里面存的是数字 但是输出出来就被解析成字符了
#3
字符在计算机里是按ASC码存储的,而ASC码本身就是整型数,C语言里char型和int型之间的运算就是把char型转换成相应的ASC码,然后进行运算
#4
谢谢各位带哥了
#5
电脑内存或文件内容或传输内容只是一个一维二进制字节数组及其对应的二进制地址;
人脑才将电脑内存或文件内容或传输内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……
理解和 讨论之前请先学会如何 观察!
http://edu.csdn.net/course/detail/2344 C语言指针与汇编内存地址-一.代码要素
计算机组成原理→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语言指针与汇编内存地址-一.代码要素
计算机组成原理→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执行停在该断点处的时候。
#6
字符只是数字的另一种表示,比如97这个数字,如果以十进制数字表示就是97,如果以字符表示就是a,所以说字符其实就是数字的一种表现方式
#7
字符也是用数字保存的,也就是用ASCII码保存的。在数字方面有不同的解析方式,比如97按整数解读就是97,按字符解读就是a。字符实际就是数字,指的就是实际上也是用数字(二进制)保存的。对于一段数字,并不能代表什么,要结合解析方式才有意义,比如int类型解读、double类型解读、char类型解读等等。
#8
char类型是int类型的子集,只是表示的范围比int类型的小。
#9
有几个东西可以说说:
1、这里1的确是整形常量,而c也的确是字符型变量;所以这里是有cast down发生的,因为整形的取值范围比字符型取值范围大;
2、对于C语言来说,它对cast down是比较宽容的,因为C语言假定程序员知道他自己在干什么;所以编译器一般是可以不报错的,但是也可以让它报warning出来:
int main()
{
long a = 1L;
int b = a;
char c = b;
return 0;
}
$ gcc -Wconversion main.c
main.c: In function ‘main’:
main.c:6:13: warning: conversion to ‘int’ from ‘long int’ may alter its value [-Wconversion]
int b = a;
^
main.c:7:14: warning: conversion to ‘char’ from ‘int’ may alter its value [-Wconversion]
char c = b;
而char a = 1;这种在早期实在是太常见了,所以早期的编译器也基本对于这种cast down不报warning,比较少见的几种例外。
3、相比Java就不允许这种隐式的cast down了,必须:
short a = 1;
a = (short)(a + 1);
4、在C中,'A'就是整形,和65没有区别;在C++中,'A'有了自己单独的类型,即字符型。
1、这里1的确是整形常量,而c也的确是字符型变量;所以这里是有cast down发生的,因为整形的取值范围比字符型取值范围大;
2、对于C语言来说,它对cast down是比较宽容的,因为C语言假定程序员知道他自己在干什么;所以编译器一般是可以不报错的,但是也可以让它报warning出来:
int main()
{
long a = 1L;
int b = a;
char c = b;
return 0;
}
$ gcc -Wconversion main.c
main.c: In function ‘main’:
main.c:6:13: warning: conversion to ‘int’ from ‘long int’ may alter its value [-Wconversion]
int b = a;
^
main.c:7:14: warning: conversion to ‘char’ from ‘int’ may alter its value [-Wconversion]
char c = b;
而char a = 1;这种在早期实在是太常见了,所以早期的编译器也基本对于这种cast down不报warning,比较少见的几种例外。
3、相比Java就不允许这种隐式的cast down了,必须:
short a = 1;
a = (short)(a + 1);
4、在C中,'A'就是整形,和65没有区别;在C++中,'A'有了自己单独的类型,即字符型。
#10
ASCII码的1
比如说在ascii码里面a是97
然后就,自己看图
比如说在ascii码里面a是97
然后就,自己看图
#11
《C++Primer第四版中文版》中提到
表示整数、字符和布尔值的算术类型合称为 整型, 8 位的unsigned char,其取值范围从 0 到 255(包括 255),而char的取值范围是-128~127
表示整数、字符和布尔值的算术类型合称为 整型, 8 位的unsigned char,其取值范围从 0 到 255(包括 255),而char的取值范围是-128~127
#12
推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。
#13
char c = 1;1是整形常量。 会有隐式转换的,等同于char c = (char)1; char 类型相当于占1个字节的整形数。
#14
表示ASCII等于1的字符...
#1
看一下题目 各位带哥
#2
计算机里全是数字
看你如何解析了
char里面存的是数字 但是输出出来就被解析成字符了
看你如何解析了
char里面存的是数字 但是输出出来就被解析成字符了
#3
字符在计算机里是按ASC码存储的,而ASC码本身就是整型数,C语言里char型和int型之间的运算就是把char型转换成相应的ASC码,然后进行运算
#4
谢谢各位带哥了
#5
电脑内存或文件内容或传输内容只是一个一维二进制字节数组及其对应的二进制地址;
人脑才将电脑内存或文件内容或传输内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……
理解和 讨论之前请先学会如何 观察!
http://edu.csdn.net/course/detail/2344 C语言指针与汇编内存地址-一.代码要素
计算机组成原理→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语言指针与汇编内存地址-一.代码要素
计算机组成原理→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执行停在该断点处的时候。
#6
字符只是数字的另一种表示,比如97这个数字,如果以十进制数字表示就是97,如果以字符表示就是a,所以说字符其实就是数字的一种表现方式
#7
字符也是用数字保存的,也就是用ASCII码保存的。在数字方面有不同的解析方式,比如97按整数解读就是97,按字符解读就是a。字符实际就是数字,指的就是实际上也是用数字(二进制)保存的。对于一段数字,并不能代表什么,要结合解析方式才有意义,比如int类型解读、double类型解读、char类型解读等等。
#8
char类型是int类型的子集,只是表示的范围比int类型的小。
#9
有几个东西可以说说:
1、这里1的确是整形常量,而c也的确是字符型变量;所以这里是有cast down发生的,因为整形的取值范围比字符型取值范围大;
2、对于C语言来说,它对cast down是比较宽容的,因为C语言假定程序员知道他自己在干什么;所以编译器一般是可以不报错的,但是也可以让它报warning出来:
int main()
{
long a = 1L;
int b = a;
char c = b;
return 0;
}
$ gcc -Wconversion main.c
main.c: In function ‘main’:
main.c:6:13: warning: conversion to ‘int’ from ‘long int’ may alter its value [-Wconversion]
int b = a;
^
main.c:7:14: warning: conversion to ‘char’ from ‘int’ may alter its value [-Wconversion]
char c = b;
而char a = 1;这种在早期实在是太常见了,所以早期的编译器也基本对于这种cast down不报warning,比较少见的几种例外。
3、相比Java就不允许这种隐式的cast down了,必须:
short a = 1;
a = (short)(a + 1);
4、在C中,'A'就是整形,和65没有区别;在C++中,'A'有了自己单独的类型,即字符型。
1、这里1的确是整形常量,而c也的确是字符型变量;所以这里是有cast down发生的,因为整形的取值范围比字符型取值范围大;
2、对于C语言来说,它对cast down是比较宽容的,因为C语言假定程序员知道他自己在干什么;所以编译器一般是可以不报错的,但是也可以让它报warning出来:
int main()
{
long a = 1L;
int b = a;
char c = b;
return 0;
}
$ gcc -Wconversion main.c
main.c: In function ‘main’:
main.c:6:13: warning: conversion to ‘int’ from ‘long int’ may alter its value [-Wconversion]
int b = a;
^
main.c:7:14: warning: conversion to ‘char’ from ‘int’ may alter its value [-Wconversion]
char c = b;
而char a = 1;这种在早期实在是太常见了,所以早期的编译器也基本对于这种cast down不报warning,比较少见的几种例外。
3、相比Java就不允许这种隐式的cast down了,必须:
short a = 1;
a = (short)(a + 1);
4、在C中,'A'就是整形,和65没有区别;在C++中,'A'有了自己单独的类型,即字符型。
#10
ASCII码的1
比如说在ascii码里面a是97
然后就,自己看图
比如说在ascii码里面a是97
然后就,自己看图
#11
《C++Primer第四版中文版》中提到
表示整数、字符和布尔值的算术类型合称为 整型, 8 位的unsigned char,其取值范围从 0 到 255(包括 255),而char的取值范围是-128~127
表示整数、字符和布尔值的算术类型合称为 整型, 8 位的unsigned char,其取值范围从 0 到 255(包括 255),而char的取值范围是-128~127
#12
推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。
#13
char c = 1;1是整形常量。 会有隐式转换的,等同于char c = (char)1; char 类型相当于占1个字节的整形数。
#14
表示ASCII等于1的字符...