c语言数据类型

来源:百度知道 编辑:UC知道 时间:2024/05/18 23:10:42
#include <AT89X51.H>
#include <stdio.h>

main()

{
char a,b;

SCON=0x40;
REN=1;
TMOD=0x20;
TH1=0xE6;
TL1=0xE6;
TI=1;
TR1=1;

a=10;
b=1;

printf("c=%d\n",(a+b));
}
怎么C会等于2816,而a,b为INT型则会等于11.
unsigned char和char有什么区别?加了unsigned和没加运算结果怎么会是一样的.请高手帮忙解答一下..
我是在keil UV3里面防真出来的,Serial Windows 窗口里面。

请问一下,KEIL里面要计算出一个数的值,那个值用一般采那个方法查看的.

补充
----------------------------------------------------------------------------------------------------------------------
2816 = 0x0B00
11 = 0x000B

应该是串口或者字节序的问题
----------------------------------------------------------------------------------------------------------------------

#include<stdio.h>
main()
{
char a,b;
a=10;
b=1;
printf("c=%d\n", (a+b));
getch();
}
输出:
c=11
----------------------------------
不知道楼主的2816怎么来的

char a=0xff;//有符号,最高位是符号位
unsigned char b=0xff;//无符号
printf("a=%d, b=%d", a, b);
输出结果为
a=-1, b=255
----------------------------------------------
#include<stdio.h>
main()
{
int i;
for(i=0;i<256;i++)
printf("(char)i=%d\t(unsdigned char)i=%d\n",(char)i, (unsigned char)i);
getch();
}

输出:
(char)i=0 (unsigned char)i=0<