C程序设计-运算运算符优先级转义字符

Posted zimsky

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C程序设计-运算运算符优先级转义字符相关的知识,希望对你有一定的参考价值。

运算:

  取余运算%:两侧必须为整型数,x%10:得到x的个位数;

  除法运算/:任意两整数相除,结果为整数;两边有一个为浮点数,结果为浮点数;

  x/(10^(n-1))%10:得到x对应的n位数(n:个、十、百、千、万…),对应代码:{(x/(int)(pow(10,n-1))%10;};

  log10(x)+1:得到x的位数,对应代码:{(int)log10(x)+1;};

  截取数num第low~high位:{for(int i = 0; i < high - low +1; i++){res += num / (int)pow(10, low - 1 + i) % 10 * (int)pow(10, i);}}。

 

运算符优先级:

  初级运算符( )、[ ]、->、.  高于  单目运算符  高于  算数运算符(先乘除后加减)  高于  关系运算符  高于  逻辑运算符(不包括!)  高于  条件运算符  高于  赋值运算符  高于  逗号运算符,位运算符的优先级比较分散。

  除了赋值运算符、条件运算符、单目运算符三类的平级运算符之间的结合顺序是从右至左,其他都是从左至右。

  

优先级

运算符

名称或含义

使用形式

结合方向

说明

1

[]

数组下标

数组名[常量表达式]

左到右

--

()

圆括号

(表达式)/函数名(形参表)

--

.

成员选择(对象)

对象.成员名

--

->

成员选择(指针)

对象指针->成员名

--

2

-

负号运算符

-表达式

右到左

单目运算符

~

按位取反运算符

~表达式

++

自增运算符

++变量名/变量名++

--

自减运算符

--变量名/变量名--

*

取值运算符

*指针变量

&

取地址运算符

&变量名

!

逻辑非运算符

!表达式

(类型)

强制类型转换

(数据类型)表达式

--

sizeof

长度运算符

sizeof(表达式)

--

3

/

表达式/表达式

左到右

双目运算符

*

表达式*表达式

%

余数(取模)

整型表达式%整型表达式

4

+

表达式+表达式

左到右

双目运算符

-

表达式-表达式

5

<< 

左移

变量<<表达式

左到右

双目运算符

>> 

右移

变量>>表达式

6

大于

表达式>表达式

左到右

双目运算符

>=

大于等于

表达式>=表达式

小于

表达式<表达式

<=

小于等于

表达式<=表达式

7

==

等于

表达式==表达式

左到右

双目运算符

!=

不等于

表达式!= 表达式

8

&

按位与

表达式&表达式

左到右

双目运算符

9

^

按位异或

表达式^表达式

左到右

双目运算符

10

|

按位或

表达式|表达式

左到右

双目运算符

11

&&

逻辑与

表达式&&表达式

左到右

双目运算符

12

||

逻辑或

表达式||表达式

左到右

双目运算符

13

?:

条件运算符

表达式1?

表达式2: 表达式3

右到左

三目运算符

14

=

赋值运算符

变量=表达式

右到左

--

/=

除后赋值

变量/=表达式

--

*=

乘后赋值

变量*=表达式

--

%=

取模后赋值

变量%=表达式

--

+=

加后赋值

变量+=表达式

--

-=

减后赋值

变量-=表达式

--

<<=

左移后赋值

变量<<=表达式

--

>>=

右移后赋值

变量>>=表达式

--

&=

按位与后赋值

变量&=表达式

--

^=

按位异或后赋值

变量^=表达式

--

|=

按位或后赋值

变量|=表达式

--

15

逗号运算符

表达式,表达式,…

左到右

--

 

  同一优先级的运算符,运算次序由结合方向所决定。

  简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符

 

转义字符:

  

转义字符

意义

ASCII码值(十进制)

a

响铃(BEL)

007



退格(BS) ,将当前位置移到前一列

008

f

换页(FF),将当前位置移到下页开头

012

换行(LF) ,将当前位置移到下一行开头

010

回车(CR) ,将当前位置移到本行开头

013

水平制表(HT) (跳到下一个TAB位置)

009

v

垂直制表(VT)

011

\

代表一个反斜线字符‘‘‘

092

代表一个单引号(撇号)字符

039

"

代表一个双引号字符

034

?

代表一个问号

063

空字符(NUL)

000

ddd

13位八进制数所代表的任意字符

三位八进制

xhh

十六进制所代表的任意字符

十六进制

  注:xhh 十六进制转义不限制字符个数,如: ‘x000000000000F‘ == ‘xF‘。

 

、 、 的区别:

   软回车
        
Windows 中表示换行且回到下一行的最开始位置,相当于Mac OS 里的 的效果;
        
Linuxunix 中只表示换行,但不会回到下一行的开始位置。
  
软空格
        
Linuxunix 中表示返回到当行的最开始位置;
        
Mac OS 中表示换行且返回到下一行的最开始位置,相当于Windows 里的 的效果。
  
跳格(移至下一列)

 

  它们在双引号或定界符表示的字符串中有效,在单引号表示的字符串中无效;

   一般一起用,用来表示键盘上的回车键,也可只用
  
表示键盘上的“TAB”键。

 

  文件中的换行符号:
    linux,unix:
    windows:    
    Mac OS

 

“回车”(carriage return)和“换行”(line feed)概念的来历和区别:

  在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的机器,每秒钟可以打10个字符。但是存在每打完一行换行时需要0.2秒的问题,0.2秒正好可以打两个字符。如果在这0.2秒中,又有新的字符传过来,那么这个字符将丢失。研制人员在每行后面加两个表示结束的字符解决了这个问题。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。随着计算机的发明,这两个概念也被引入到了计算机。彼时存储器价格高昂,一些科学家认为在每行结尾加两个字符过于浪费,加一个就可以,于是出现了分歧。Unix系统里,每行结尾只有“<换行>”,即“ ”;Windows系统里面,每行结尾是“<换行><回车>”,即“ ”;Mac系统里,每行结尾是“<回车>”,即“ ”。直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。

  c语言编程时(windows系统):

     就是return,回到本行行首,这就会把这一行以前的输出覆盖掉如:
      int main() {
      cout << "out" << " " << "put" ;
      }

    最后只显示putout被覆盖了

     是回车+换行,把光标先移到行首然后再换到下一行,如:

      int main() {

      cout << "out" << " " << "put" ;
      }
    
则显示:

    out
    put

以上是关于C程序设计-运算运算符优先级转义字符的主要内容,如果未能解决你的问题,请参考以下文章

C语言重点难点精讲C语言中的重要符号

c语言程序设计:输入两个数和一个运算符,计算其结果。

C语言逻辑运算符和if语句

C程序设计导引

C语言运算符优先级顺序

计算器这个程序的道理。