码迷,mamicode.com
首页 > 其他好文 > 详细

C程序设计(3)-运算、运算符优先级、转义字符

时间:2020-04-07 09:43:55      阅读:89      评论:0      收藏:0      [点我收藏+]

标签:style   三目运算符   语言   tac   比较   其他   浮点数   十六进制   函数   

运算:

  取余运算%:两侧必须为整型数,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

\b

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

008

\f

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

012

\n

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

010

\r

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

013

\t

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

009

\v

垂直制表(VT)

011

\\

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

092

\‘

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

039

\"

代表一个双引号字符

034

\?

代表一个问号

063

\0

空字符(NUL)

000

\ddd

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

三位八进制

\xhh

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

十六进制

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

 

\r、\r\n、\t的区别:

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

 

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

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

 

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

 

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

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

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

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

    最后只显示putout被覆盖了

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

      int main() {

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

    out
    put

C程序设计(3)-运算、运算符优先级、转义字符

标签:style   三目运算符   语言   tac   比较   其他   浮点数   十六进制   函数   

原文地址:https://www.cnblogs.com/zimsky/p/12651178.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!