第二章 类型、运算符、表达式
来源:互联网 发布:qq空间for mac 编辑:程序博客网 时间:2024/06/08 00:41
1 c语言没有指定同一运算符中多个操作数的计算顺序(&& 、||、?:和,运算符除外。例如,在形如
x = f ( ) + g ( );
的语句中,f ( )可以在g ( )之前计算,也可以在g ( )之后计算。因此,如果函数 f 和 g 改变了另一个函数所使用的变量,那么x的结果可能会依赖于这两个函数的计算顺序。为保证特定的计算顺序,可以把中间结果保存在中间变量中。
类似地,c语言也没有指定函数各参数的求值顺序。因此,下列语句
printf ( "%d %d \n", ++n, power ( 2,n )); //错
在不同的编译器中可能会产生不同的结果,这取决于n的自增运算在power调用之前还是之后执行。解决的办法是把该语句改写成下列形式:
++n;
printf ( "%d %d \n", n, power( 2,n));
还有类似地 a[i] = i++;
问题是:数组下表i是引用旧值还是新值?对这种情况编译器的解释可能不同,并因此产生不同的结果。
c院标准对大多数这类问题有意未作具体规定。
表达式何时会产生这种副作用(对变量赋值),将由编译器决定,因为最佳的求值顺序同机器结构有很大关系。
2 逗号运算符“ , ”,也是C语言优先级最低的运算符,在for语句中经常会用到它。被逗号分隔的一对表达式将按照从左到右的顺序进行求值,各表达式右边的操作数的类型和值即为其结果的类型和值。
在某些情况下的逗号并不是逗号运算符,比如分隔函数参数的逗号,分隔声明中的变量的逗号等,这些逗号并不保证各表达式按从左至右的顺序求值。
3 break语句可用于从for、while、do-while、switch等循环中提前退出。
continue语句用于使for、while、或do-while语句开始下一次循环的执行。在while与do-while语句中,continue语句的执行意味着立即执行测试部分;在for循环中,则意味着使控制转移到递增循环变量部分。continue语句只用于循环语句,不用于switch语句。某个循环中包含的switch语句中的continue语句,将导致进入下一次循环。
- 第二章 类型、运算符与表达式
- 第二章 类型,运算符和表达式
- 第二章 类型、运算符、表达式
- 第二章--类型运算符表达式
- 《C程序设计语言》笔记----第二章 类型、运算符与表达式
- 《C程序设计语言》 第二章 类型、运算符与表达式
- itpt_TCPL 第二章:类型、运算符以及表达式
- 第二章——类型、运算符与表达式
- K&R 第二章 类型,运算符 与表达式
- C语言--第二篇类型、运算符与表达式
- TCPL(The C Programming Language)读书笔记 第二章 类型、运算符与表达式
- The C programming language --第二章 类型、运算符与表达式 读书笔记
- The C Programming Language 第二章类型、运算符与表达式 读书笔记
- 【书中示例】--《C程序设计语言》第二章:类型、运算符、表达式
- 第二章: 数据类型、运算符、表达式
- 第二章 数据类型、运算符、表达式
- 第二章 表达式与运算符
- 一、类型、运算符、表达式
- 天才的大三暑假修行之旅.表面着色器(一)
- VLAD特征(vector of locally aggregated descriptors)
- iOS UINavigationBar + UITabBar
- SQLserver数据库中带循环处理的存储过程
- Codeforces Round #260 (Div. 2) E. Civilization
- 第二章 类型、运算符、表达式
- HDU 4771 Stealing Harry Potter's Precious (深搜+广搜)
- [Leetcode 150, Medium] Evaluate Reverse Polish Notation
- Error 1310 Error writing to file:C:\Windows\...*.dll. Verify that you have access to that directory
- 04-树9. Path in a Heap (25)
- .net学习之委托
- ThinkPHP 空操作处理方法
- nyoj-20-吝啬的国度(深搜)
- Java错误提示------------------Cannot reduce the visibility of the inherited method from MouseListener