附: Turbo c运算符的优先级 O(小括号)可(数组下标)·(结构成员)一(指针型结构成员)!最高,二二 (逻辑非).(位取反)-负号)++(加1)-(减1)&(变量地址) *(指针所指内容)type(函数说明) sizeof(长度计算) *(果) /(除) %(取模) +(加) (减) <<(位左移) >>(位右移) <(小于)<=(小于等于)>(大于)>=(大于等于) ==(等于) !=(不等于) &(位与) (位异或) (位或) &&(逻辑与) |(逻辑或 ?:(?表达式) =+==(联合操作) ,(逗号运算符) 最低
附:Turobo C运算符的优先级
运算符 ※算术运算符 运算符 运算 范例 结果 正号 负号 b=4;-b; 5+ 10 加减乘除 6-4 2 3*4 12 5/5 取模 5%5 自增(前) a=2:b=++a a=3;b=3 自增(后) a=2:b=a++ a=3:b=2 自减(前) a=2:b=-a a=1:b=1 自减(后) a=2:b=a- a=1:b=2
运算符 算术运算符
运算符 ◆强调和技巧 两个整数相除5/3,结果应为整数1,又如 ntx=3510;x=x/1000*1000结果为多少? ·%只能对两个整数进行运算,5/3.2错误 %取模运算中,摸数和被摸数为负数的情况 举例23%3、23%3、-23%3、-23%3 结果为2、 2、 2 ◆规律:摸数为负数时,将负号忽略即可;若被取模的 数是负数时,先忽略负数,然后将结果置为负
运算符 强调和技巧 • 两个整数相除5/3,结果应为整数1,又如 int x=3510 ; x=x / 1000 * 1000结果为多少? • %只能对两个整数进行运算,5/3.2错误 • %取模运算中,摸数和被摸数为负数的情况 ⬧ 举例23%3、23%-3、-23%3、-23%-3 结果为 2、 2、 -2、 -2 ⬧ 规律:摸数为负数时,将负号忽略即可;若被取模的 数是负数时,先忽略负数,然后将结果置为负
算符 分析(计+)+(计++)+(i++)的结果 int 1=3, aa=(i++)+(i++)+(i++), printf( a=%d, i=%/dn", a, i) 结果为:a=9i=6 int 1=3 printf("(++)+(计++)+(i++)=%d,i=%dn"(i++)+(i++)+(i+), 结果为:(i++)+(i计+)+(i++)=12,i=3 :而在函数的参数中,则是从右到左,对各个子表达式进行运拿加 我的理解:在赋值语句中,对x++是先取值运算,再赋值,最后 举一反 分析(++i)+(++i)+(++i)的结果?答案是:18,6和15,3 再分析x=0;x=x+%10; printf(%dn”,x);的输出结果? 答案是:1 解释:取ⅹ++的值0;0%10为0;x=0;最后X自加 ◆a-3;a=a+(a=a-a*a++)的结果为a=11
运算符 • 分析(i++)+(i++)+(i++)的结果 int i=3,a;a=(i++)+(i++)+(i++);printf("a=%d,i=%d\n",a,i); 结果为:a=9,i=6 int i=3; printf("(i++)+(i++)+(i++)=%d,i=%d\n",(i++)+(i++)+(i++),i); 结果为:(i++)+(i++)+(i++)=12,i=3 我的理解:在赋值语句中,对x++是先取值运算,再赋值,最后x自加 1;而在函数的参数中,则是从右到左,对各个子表达式进行运算 举一反三: ⬧ 分析(++i)+(++i)+(++i)的结果?答案是:18,6和15,3 ⬧ 再分析x=0;x=x++%10;printf(“%d\n”,x);的输出结果? 答案是:1 解释:取x++的值0 ; 0%10为0;x=0;最后X自加1 ⬧ a=3;a=a+(a=a-a*a++)的结果为a=11
运算符 思考题1:某个培训中心要为新到的学员安排房间,假设 共有x个学员,每个房间可以在6人,让你用一个公式来计 算他们要住的房间数(不允许男女混住)? 正确答案:(x+5)6,错误答案:x6+1。上述算法还可以在 查看留言板的分页显示上:其中x是总共的留言数,结果 就是总共有多少页。 思考题2:假设你要让x的值在0到9之间循环变化请写出相 应的程序代码。 答案 0j=0; while(j<20) { xX%10: printf(-%/od,,x); x++: j++, 举一反三:在15到25之间循环变化。答案如下: a=15+(x-X%11), printf( a=%/od n, a); x+:j++
运算符 • 思考题1:某个培训中心要为新到的学员安排房间,假设 共有x个学员,每个房间可以住6人,让你用一个公式来计 算他们要住的房间数(不允许男女混住)? 正确答案:(x+5)/6,错误答案:x/6+1。上述算法还可以在 查看留言板的分页显示上:其中x是总共的留言数,结果 就是总共有多少页。 • 思考题2:假设你要让x的值在0到9之间循环变化请写出相 应的程序代码。 答案: int x= 0,j=0; while(j<20) { x=x%10;printf(“%d”,x);x++;j++; } 举一反三:在15到25之间循环变化。答案如下: a=15+(x=x%11);printf(“a=%d\n”,a);x++;j++;