C运算符!与||的优先级问题&&《The C Programming Language》推荐

今天写Dijkstra算法时发现有段代码有问题:

for(int i=0;i

在第四行想着写!t来判断t仍为初始-1的情况,哪知最后t值貌似一直为负,想了会找到了原因,!的优先级比较小,符号的运算顺序是从右往左的。所以实际上,执行的语句是!(t||dist[j]

对于咱这种新手来说,这也算是新鲜事,也亏了最近在啃《The C Programming Language》(英文第二版)这本基础语法书,这本书是之前(不知天高地厚)看CSAPP时课程开头就推荐的C语言入门书。

啃了前面几章,还蛮不错,前面的一些位移运算看英文有点懵,在菜鸟编程里翻对应的中文内容补了补先;讲的蛮多新手容易忽略(或未曾了解但值得了解)的细节,包括这个符号优先级,还有头文件、稍稍复杂一点的语句的情况分析等,推荐一波,我也继续坚持啃完,想到要记录的内容,可能会继续在该帖上添加~

资源的话,这本云盘挺容易搜的呢~

你可能感兴趣的:(课程&书籍的笔记与推荐)