摘要: 1 .优先级高于*,可以用->替代消除这个问题 *p.v可以替代为p->v2 []高于*3 函数()高于* int *fp()4 ==和!= 高于位操作符 val&mask!=05 ==和!= 高于赋值符6 算术运算高于移位运算7 逗号运算在所有运算符中优先级最低 i=1,2 会被解释为(i=1),2,运算符的结果是最右边的值,上面的结果为常数2,最终被丢弃。a=b=c 所有的赋值操作符都具有右结合性,该表达式会先执行b=c,再执行a=b.大部分的表达式中里各个操作数的计算顺序是不定的,如a()+g()这两个是先执行a()还是g()是没有定义的,有利于编译器根据平台进行编译 阅读全文
posted @ 2013-01-06 15:31 周尚武 阅读(244) 评论(0) 推荐(0) 编辑
摘要: #include <stdio.h>void generate(char *str){ static char separator = ' '; printf("%c %s",separator,str); separator = ',';}int main(){ char *strs[] = {"china","japan","usa"}; int i = 0; for(;i<sizeof(strs)/sizeof(strs[0]);i++) { generate 阅读全文
posted @ 2013-01-06 14:37 周尚武 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 当执行算术运算时,如果类型不同都会发生类型转换1、如果整形转换为signed不丢失数据,就转换为signed.否则需要转换为unsigned如:一类型为signed int,另一类型为unsigned short,因为signed可以容纳unsigned short的全部值,所以unsigned short会转为signed int.一类型为unsigned int,另一类型为signed int,则signed int会转换为unsigned int.Demo1: 1 main() 2 { 3 if(-1 < (unsigned char)1) 4 { 5 //会进入到这里,uns.. 阅读全文
posted @ 2013-01-06 10:17 周尚武 阅读(176) 评论(0) 推荐(0) 编辑