| [C] 纯文本查看 复制代码 main(){
        int c = 0x20;
        char a;
        while(c < 0x80)
        {
                if(c!= 0x20 && c%16 == 0)
                {
                        printf("\n");
                }
                if(!(c%16))
                {
                        printf("%x0H: ",c/16);
                }
                printf("%c",c++);
        }
        printf("\nPlease input num: ");
        scanf("%c",&a);
        printf("a is %c\n",a);          
        if('A' <= a && a<= 'Z')           /*千万不要写成('a'<= c <= 'z')*/
        {
               /* a += 0x20;  */
		c = c | 0x20;
        }
        else
        {
                if('a' <= a && a <= 'z')    /*千万不要写成('a'<= c <= 'z')*/
                {
                       /* a -= 0x20;  */
			c = c & 0xdf;
                }
        }
        printf("a is new %c",a);
}
这是C语言的逻辑('a'<= c && c <= 'z')这是数学逻辑('a'<= c <= 'z');不要想当然的用数学逻辑让编译器执行,编译器不认;下次一定注意;
A 0x41:  0100-0001
a 0x61:  0110-0001
相差0x20;
布尔运算:(按位操作 0 < - > 1)   
或运算(|):只要有一个为1,结果为1;
x | z == 1
0   1 == 1
1   0 == 1
c = c | 0x20;
与运算(&):只要有一个为0,结果为0;
x & z == 0
1   0 == 0
0   1 == 0
c = c & 0xdf;
取反(~):
char a = 0x64;
a = ~a;
异或运算(^):
0  1  //1
1  0
0  0  //0
1  1
相同的0;不同得1;
A 0X64
B 0X32
A ^ B
0110-0100  A
0011-0010  B
-------------
0101-0110  C
0011-0010  B
-------------
0110-0100  A
A^B得到结果c;那么A、B、C三者之间任意两个数异或都会得到第三个数;
======================================================================
main()
{
        char i = 0;
        char * str = "Hello,Nisy!";
        for(; i < 10;i++ )
        printf("%X",*(str + i));
        printf("\n%s",str);
}
把"Hello,Nisy!"存储在*str内存里面;printf("%x",*(str + i));打印的时候%x是小写就出入小写,反之亦然;
-----------------------
main()
{
        int i;
        char a[15];     /*现申请15个字节*/
        for(i = 0; i < 15 ;i++)
        {
                a[i] = 'a';    /*把这15个字节都赋值为a*/
        }
        for(i = 0; i < 15 ;i++)
        {
                printf("%c",a[i]);    /*把这15个为a字节的数据打印出来*/
        }
        printf("\n");
        scanf("%10s",a);   /*scanf("%s");%s之间必须要设定长度*/
        printf("%s\n",a);   /*%s为字符串*/
        for(i = 0; i < 15 ;i++)
        {
                printf("%2X",a[i]);	/*输入数据后,把输入的数据按16进制输出;疑问:%x和%2x之间的关系?*/
        }
        printf("\n");
        i = 0;
        while(a[i] != 0)	/*测试一下是否字符串是以0结果的,遇到0停止打印*/
        {
                printf("%c",a[i]);
                i++;
        }
}
结论:%s输出字符串,在内存中字符串是以0结果的;
=============================================================================
封装函数:
void showstr(char * str)
{
        int i=0;
        while(str[i])
        {
                printf("%c",str[i]);
                i++;
        }
        printf("\n");
}
main()
{
        int i;
        char str[20];
        for(i = 0; i < 20; i++)
        {
                str[i] = 'a';
        }
        scanf("%10s",str);
        showstr(str);
        for(i = 0; i < 20; i++)
        {
               if(str[i] >= 'A'&& str[i] <= 'z')
               {
                        str[i] |= 0x20;
               }
        }
        showstr(str);
}
把      
        int i=0;
        while(str[i])
        {
                printf("%c",str[i]);
                i++;
        }
        printf("\n");
这段重复的代码封装成一个函数,在调用的时候直接写showstr(str);就可以不需要再重新打一遍代码;
---------------------------------------
用goto解释for()循环:
main()
{
        int i;
      /*  for(i = 0 ; i < 10 ; i++)
        {
                printf("%d",i);
        }       */
        i = 0;
      /*  while(i < 10) */
while_start:                   /*先在定义开始的标号*/
        if(i < 10)                                        /*判断条件是否满足*/
                goto while_ok;  /*如果满足条件就跳到while_ok;这句执行*/
        else
                goto while_end;  /*否则就跳到while_end;这句执行*/
        {
while_ok:                          /*while_ok;的代码*/
                printf("%d",i);
                i++;
                goto while_start;    /*执行完后跳到while_start;这里*/
        }
while_end:                             /*结束*/
        i = i + 1;
mark:
        i = 1 + 2;
        printf("\n");
}
--------------
程序中 每一个函数 都需要在main()外部申请一些空间来实现函数的调用和返回;
每一个函数 都需要以下的空间长度:
	参数的空间;
	函数的返回地址;
第九课最后还拆解了上面的封装函数;(未写)
 |