阅读14
一句话包含两个意思
1定义以256个字符型(char)为单位的组成
数组
str
2str内的256个字符变量全部赋值为ASCII的0
解释下
={'\0'}
数组中第一个为'\0',其他的全为0
'\0'其实就是0
同时可以表示字符串结束
也就是说数组内全是0
char
a[4]={1,2,3}
与
char
a[4]={1,2,3,0}
一个意思
char
a[4]={0}与char
a[4]={0,0,0,0}一个意思
char
a[4]={'\0'}与char
a[4]={0}一个意思
char
a[4]={'\0'}与char
a[4]={0,0,0,0}一个意思
chara[256]={'\0'}与chara[256]={0,0,0,00,0,0}一个意思
char只有1个
字节
(BYTE),也就是8个位(bit)
您的char c=256;256用二进制表示的话是100000000,也就是低8位全部为0。而char类型的c只能保存8bit的数据(也就是低8位)所以实际上c=0。
同理,255的二进制表达方式为11111111,因为char类型是有符号的类型(其对应的无符号类型为unsigned char),所以其最高位为符号位,符号位为0时时正数,为1是负数。而取值方法使用“补码"。
至于补码的详细信息,请参考
相信看完之后您就理解了。
char name[256]={0};//初始化程序拿出啦,不然报错
switch(id)
{
case IDC_BTN1:
GetDlgItemText(hwnd,IDC_EDTNAME,name,sizeof(name)/sizeof(char));
MessageBox(NULL,name,TEXT("问好"),MB_OK);
break;
case IDC_BTN2:
MessageBox(NULL,TEXT("是否退出"),TEXT("退出"),MB_OK|MB_ICONWARNING);
break;
default:break; }所谓union(联合)的意思是,前后定义的变量公用一个存储器地址
根据stu的定义,i的地址最低字节与c[0]共用,i的地址高1字节与c[1]共用假定int变量占用4字节,起始地址是80000000H,那么内存分配情况如下所示:
(由于百度知道不利于空格对齐显示,上述我用记事本写了个说明)
八进制和十六进制可以直接用%o和%x输出。二进制这里自己弄了下。#include <stdioh>
int main(int argc, char argv[])
{
int i, j, n;
char two[9] = {0};
for(i = 1; i <= 255; i++)
{
/十进制/
printf("%4d",i);
/二进制/
for(j=7, n=i; j>=0; j--, n>>=1)
{
two[j]=(n & 1) + '0';
}
printf("%9s", two);
/八进制/
printf("%4o", i);
/十六进制/
printf("%3x\n", i);
}

打赏