1、y=x/*p实际上编译器把/*当作一段注释的开始,把/后面的内容当作注释内容,知道出现/位置,由于没找到所以会提示出错。
可以把上面的表达式修改一下:y=x/ *p加一个空格 表示x除以p指向内存的值,后者y=x/(p).也就是说只要斜杠(/)和星号()之间没有空格都会把它当作注释的开始。
2.c语言里反斜杠(\)表示断行,编译器会将反斜杠剔除掉,跟在反斜杠后面的字符会自动接续到前一行,但要注意反斜杠之后不要有空格,反斜杠的下一行之前也不能有空格。反斜杠除了可以用作续接符,还能被用作转义符的开始标识。
3.单引号和双引号:我们知道双引号引起来的都是字符串常量,单引号引起来的都是字符常量,字符常量在内存中占一个字节,字符串常量在内存中占两个字节。
如 1,‘1’,“1”三者的意义完全不一样,所占内存也不一样,一个整形常数,32 位系统占4个字节,一个字符常量,占一个字节,一个字符串常量占两个字节(包括一个结束字符)。字符在内存里是以ASCAII码存储的,所以字符常量可以与整形常量或变量进行计算。
形式上: 字符常量是单引号引起的一个字符;
字符串常量是双引号引起的若干个字符;
含义上: 字符常量相当于一个整型值,可以参加表达式的运算;
字符串常量代表一个地址值(该字符串在内存中存放的位置);
占内存大小:字符常量只占一个字节;
字符串常量占若干个字节,(至少一个字符结束标志)
4.ox01<<2+3结果为七吗?不对,结果为32,因为+号的优先级比移位的优先级高,此外左移和右移的位数不能大于数据的长度,不能小于0.
5.关于i++的计算。k=(i++)+(i++)+(i++);
6.const修饰的是只读变量而不是常量,不能用来作为定义数组的维数,也不能放在case后面。
7.一些易混的优先级表达式。