C语言
wickedwu
这个作者很懒,什么都没留下…
展开
-
C语言运算符整理
从新学了一下C语言,发现每次看过C语言中的运算符之后,过一段时间便忘了各种运算符的优先级及结合顺序,每次都要翻书,各种苦逼,好吧,这次顺便整理一下。优先级运算符名称或含义使用形式结合方向说明1[]数组下标数组名[常量表达式]...原创 2012-11-21 18:49:23 · 127 阅读 · 0 评论 -
由只北一样的表达式说开去
好吧,表示被C语言的表达式语句坑的跟狗一样,或者是因为C那种松散的语言特性。这种特性有时候能带来更大的编程自由度,有时让人很无奈。 有这么一个表达式:int i = 7;printf("%d\n",i++*i++);这个printf语句输出的结果是什么?49,擦,为毛不是56?自增运算符++,他的作用是使表达式的值自增1,i++与++i的区别在于:i++是表达式的值是原来i...原创 2012-11-22 00:54:51 · 137 阅读 · 0 评论 -
C语言中的"序列点"和“未定义”
在上一篇文章<由只北一样的表达式说开去>中提到了"序列点"和“未定义”这两个概念,而且好像有点难理解的样子,在这篇文章就理一下相关概念。 首先是"序列点":序列点是一个时间点,此刻操作完成,所有的副作用都已确保结束。C语言标准中提及的序列点包括:1、完整表达式(表达式语句或不为任何其他表达式的子表达式的表达式)的尾部;2、||、&&a...2012-11-24 00:25:30 · 245 阅读 · 0 评论 -
不用中间变量交换两个变量的值
之前在笔试的时候遇到过这么一道题:不使用中间变量交换两个变量的值。当时因为有两年多没看C语言了,居然木有做出来,果断被鄙视了,最近重新再学C,想到有这么一道题,就顺手解决它。基本上会有两种思路:1、从赋值想;2、异或逻辑运算符。 第一种,a+=b;b = a-b;a -=b;第一个表达式把a+b赋给a,相当于a = a+b;此时...原创 2012-11-24 00:57:53 · 259 阅读 · 0 评论 -
C语言中避免未定义求值顺序的方法
前面几篇文章一直在说关于未定义表达式求值顺序的问题,是时候做一点总结了,很多教材都建议在程序中尽量少用未定义的表达式,因为确定序列点确实是一件让人不爽的事,这里有一些建议,或许能减少未定义表达式的出现频率。 1、确保一个表达式最多只修改一个对象:一个简单变量,一个数组成员、一个指针指向的位置。“修改”指的是诸如:=、+=、-=等赋值操作和...2012-11-26 23:52:41 · 168 阅读 · 0 评论