韩旭最好的我们:c语言中逻辑运算的短路问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/30 08:41:05
main()
{int a=0,b;
b=a++&&a++&&a++;
printf("%d.%d",a,b);
}
a= b=
只是基础运算 答案是 1,0 我只是不明白为什么 请那位大虾解释一下

在不同编译环境中结果不一样

1 都是逻辑与&&运算,算式从左到右结合;
2 a++是先使a参与运算,则a=0使得整个表达式(a++&&a++&&a++)为假,后面的两个a++不再运算,则整个表达式为假=0,赋值给b,则b=0;
3 只运算第一个a++,所以a自增为1,a=1.

同意 tanyuguo

评论 ┆ 举报

最佳答案此答案由提问者自己选择,并不代表百度知道知识人的观点

回答:毛毛琨
学长
4月17日 14:09 不同意楼上所有人的说法,因为他们似乎不太重视数据结构。
首先回答你的问题,我认为学习数据库之前应该学习离散数学和线性代数。这两门课中就有一些数据结构的算法,比如哈希函数、最短路进算法等等,此外还有一些运算的技巧,比如矩阵的运算技巧和存储技巧。当你对离散和线性代数有一定基础后,接触数据结构课程就比较容易了。我们当初学习的是高等教育出版社的用C语言描述的数据结构,基本上前几章在C中讲过,但必须要仔细听,因为他渗透了更多的、更有变化的算法,比如链表的各种操作和类型,尤其注意的是双向循环链表、十字链表。此外队列要注意循环队列。第二个重点就是树,首先要知道书的存储结构和逻辑结构是怎样的,然后要重点了解树的各种遍历,因为不同遍历形成不同种(前,中,后)缀表达式。此外哈夫曼树的建立,哈夫曼编码解码也是很重要的,因为他是当今数据压缩的最经典的算法之一。然后就是排序和查找算法,大多数用到树的知识,一定要记住排序和查找算法,因为他几乎是程序的灵魂模块。各算法的事件复杂度和稳定性的比较也要当作重点。总之学习数据结构不要看他的用什么语言描述,应该看他的实质,太在乎C中的指针的操作只会影响你的学习。

揪错 ┆ 评论 ┆ 举报