怎样学好c语言,那些符号什么的看不懂啊

说实话,看C语言中的运算符优先级表让我很头疼。
尤其是那些三级运算符和赋值运算符的连锁反应就像是在混乱中行走。
我记得我在写字符串处理函数的时候,因为逗号运算符的优先级最低,所以在检索子字符串时我总是会选择错误的位置。
我花了几个小时的调试才发现在代码行之前有一个变量声明重复了几次,导致检索值时需要执行额外的步骤。

令人惊讶的是,按位运算符并不难学,但很难正确使用。
以前,当我在 Linux 下编写驱动程序时,为了标记网络数据包,我必须使用按位与 (&) 和按位或 (|) 来正确设置某些位。
当时有一个德国小伙在他的代码中直接使用了if(packet.flag & 0x01 )。
起初我认为他的帖子太冗长了。
后来我发现这会阻止编译器更新和计算packet.flag,然后将其与0x01 进行比较,这有时会影响效率。

优先考虑杂交是一件非常具有误导性的事情。
例如a = b c + d / e;如果写的话应该知道乘法和除法先于加法和减法,但是左右组合的方向是从左到右。
我有一个朋友在写代码的时候喜欢把运算符放在括号里。
虽然有点别扭,但也没什么不好。
他自己也说过,“反正编译器不会骗我,看不懂就拆开重写。

还有指针和地址,这个优先级给我印象特别深刻。
因为C语言中指针和内存操作都非常复杂。
例如,如果你写 int a = 5 ; int p = &a;,这个&优先级最高,所以先取出a的地址,赋值给p。
如果你写 p = & a;那时,这基本上是未定义的行为 - 您试图将地址转换为整数,然后将其分配给指针。

不过话说回来,C 语法的灵活性是惊人的。
当人们编写汇编级修改时,他们直接用C进行编译,使用汇编块嵌套C代码,最后编译器自动处理。
尽管最终的二进制文件可能与另一个编译器生成的二进制文件略有不同,但性能可以大大提高。
说实话,老程序员这么酷的操作你可能看不懂,但是年轻的程序员玩起来就像傻子一样。

当块级注释和行级注释混合在一起时,优先级问题会变得烦人。
有时,当你写下 // a = b (c + d) 时,你会认为编译器会先计算括号内的内容,但 C 标准并没有明确规定注释内的内容也被计算在内,因此有些编译器可能会将其视为纯文本并将其删除,从而改变了正确的处理顺序。
在这种情况下,尽可能不要使用嵌套注释。

强制类型转换(例如(type)表达式)也比数据类型转换具有更高的优先级。
之前写图像处理库的时候,有一个地方需要将浮点数转换为无符号整数。
只需使用(无符号整数)值。
然而,一位朋友写了一个名为 FLOAT_TO_UINT(value)((unsigned int)(value)) 的宏。
这样,类型检查就严格了。
当时我没有意识到,但是在研究了信息之后,我意识到这实际上可能会阻止某些编译器在直接优化整数时使用浮点数。

最后,说实话,首先学习C语言运算符的最好方法就是写很多,犯很多错误。
我编写了一个计算器程序,并尝试了所有可能的优先级组合,然后才最终弄清楚。
现在回想起来,虽然乏味,但收获确实很大。
我在块注释中编写了计算,但编译器将其作为注释忽略。
这确实发生了。
因此,在用C写复杂的逻辑时,还是建议多加几个括号,以免自己以后看不懂。

你好 我想问下运筹学中的对偶问题符号关系对照表是什么样子的 可以给我列一个吗?谢谢了

哎呀,运筹学中的这个优化问题,之前就让我头疼过。
我记得有一次,我参与了一个项目,我想要最大化某个线性目标函数,然后随之而来的是很多约束。
当时我头晕目眩,后来我意识到这种问题可以通过两个问题来解决。

那年我在上海参加一个培训,老师给我们看了一张对照表,这张表是主问题和两个问题之间的符号关系。
哇,当我看到它时,缩放变为缩小,块反转,变量也发生变化。
我记得当时这张表就像一张地图,可以帮助你快速找到二元问题的形状。

例如,我之前遇到过一个问题。
第一个问题是线性目标函数的最大化和几个约束。
根据对比表,对偶问题减少了线性目标函数,颠倒了约束条件,改变了变量。
这样改完之后,问题就变得很简单了。

但说实话,刚开始的时候,我不太明白这些象征性的关系是如何变化的。
后来慢慢浏览,发现其实并没有那么难。
正如表中所写,原问题中的“≤”在对偶问题中变为“≥”,并且变量符号也发生变化。
这就像数学中的魔术。
随着症状的变化,问题也会发生变化。
通过解决对偶问题,我可以找到原始问题的下界,这对我来说是一个很大的突破。
以前都是直接解决主要问题,现在知道有双重问题,感觉找到了新工具。

所以这张对照表对我来说真是个宝。
现在,当我遇到优化问题时,这是我首先想到的。
但归根结底,运筹学还需要更多的实践。
理论再好,如果没有实际应用,也是毫无价值的。
哎,说起来,这个我从来没接触过,不敢乱说。
但是,如果您还有任何其他问题,我一定会尽力帮助您。
我们一起来讨论一下吧。

仪表设备功能图形符号详解

请问,我在公司做一个自动化项目,当时对装置、设备的功能的图形符号进行了全面的研究。
我记得有一次,有一个刚接触这个项目的人,他对这些代码很困惑,问我:“你怎么读这段代码?”我对他说:“别担心,慢慢来,我给你解释一下。

变量符号,例如D代表密度或比重,P代表压力或真空。
在我们的项目中,符号 D 用于测量密度。
我记得设备出现故障,密度读数错误。
幸好及时发现并处理。

功能码:A表示报警,R表示记录,C表示修正。
比如我们的项目中有一个压力表,报警功能使用代码A,一旦压力突然升高,报警就响。
好在系统反应及时,没有出现大问题。

数字组合也很有趣,比如YAL,代表低级别事故警报。
我们的项目中有一个报警系统,位于储罐底部,防止泄漏。

就工具的功能图而言,监控工具、DCS系统、控制计算机和PLC都有不同的图。
记得有一次,我们在现场调试一台PLC。
当我们看到刻的方方正正的图纸时,我们就知道它是由PLC控制的,我们就知道怎么操作了。

还有测量点,一般不单独指定。
必要时会用细实线以及PP、LP、AP等图样表示。
在一次调试操作中,当我看到LP图时,我知道这是液位测量点。
然后我顺着线找到了这个工具并检查了它。
一切都很正常。

如果你理解了这段代码,将为整个自动化项目省去很多麻烦。
我们的项目依靠这些代码成功完成了任务。
哈哈,现在回想起来,真是有点小成就啊!