c++ 负数比较大小_赛博新闻丨C/C++常见问题

本文列举了C++编程中常见的错误,如分号问题、变量名大小写混淆、使用scanf忘记加&、误用“=”与“==”、数组问题、自增判断错误、代码风格不佳、滥用goto、变量溢出、运行时编译错误、Runtime Error以及不愿意求助。通过了解这些陷阱,提升编程质量与效率。
摘要由CSDN通过智能技术生成
68aba8e7802d17bc34946bfc27218519.png

收集并报道前沿权威的数媒行业一线新闻资讯,让你随时掌握数媒领域的动态和风向。

“又是一个夜晚,

我点开OJ,

心情又沉重了几分。

看着满屏的Wrong answer

我到底哪儿错了?

有谁来买我的火柴,

有谁将一根根希望全部点燃?”

823fc2e7e79b3c785811a25ed88adbfb.png

Geek:“我来!”

ae2b8445b81ea1d9c5d5534c8a423e6b.gif

No.1 分号问题

忘记加分号“;”

或者错误输入全角分号“;”(即中文分号)

552299a8326f630099f2ee9a6fd4f011.png

在for或while循环后直接加分号导致空语句死循环。

d51c564a9ce01588affacfd760268e4b.png 7917d2f00a6204664db2393e1aae6a85.gif

No.2 变量名大小写不分

在定义变量名时可能会在引用时不匹配。

73061e2e1c4cc9749aafc29548783419.png

No.3 大括号不成对{}}

激动起来大括号一次能输俩。

c2fce9a08c80c3218424d08ca6967540.png

No.4 使用scanf忘加&

scanf("%d%d%d",year,month,date);

忘记在year,month,date前少了&后,

程序运行会没有输出,调试时会出现

“Program received signal SIGSEGV, Segmentation fault.”错误。

ef533d7b5b980c6a0f55bc9cf170314f.png

No.5 判断变量值相等混淆“=”与“==”

字符 “=”称之为“赋值运算符”

它具有右结合性,先计算出表达式右边的值,然后再把计算好的右边存储的值赋予左边的变量。所以计算完成后左右两边的值自然是相等的。注意:这个符号的左边只能是变量,因为只有变量才可以被赋值。

字符“==” 是一种“关系运算符”。

我们使用这个符号来判断左右两边表达式的值是否相等,其结果是个逻辑值。因为C语言中因为没有提供布尔型数据,所以我们只是简单地用整数 1 来表示 True,用整数 0 来表示False。

52a54e3255a3b69fee47fcf8905290eb.png

No.6(Dev-C++中)数组问题

声明错误使用变量,应用数字或常量表示大小。

可以先定义变量,输入之后再定义数组。

2f811b5e76ee659af6c65620d5a42985.png

(于瀛老师:在Dev-C++中不推荐使用,但是有的编译器是可以通过的。)

有些同学可能会将数组个数误认为最大下标值

c302b2703d51c142482c21ad26a3b5b6.png

但是程序只会输出23

这是因为数组计数是从0开始的,

a[3]是不存在哒。

No.7 在if语句中出现的自增判断

问:以下程序的运行结果是:

c75825b5d53ce39003d53af397523005.png

答:m++为先使用m的值再自增。程序判断m>5为False后自增,此时m++→m=6;跳转至else,输出m=6之后m自减,此时程序中m的值是5,但是程序运行结果为6

No.8 码风欠佳,代码难以阅读与调错

码风,即代码风格。

最早出现的、也较为传统的是K&R风格。所谓K&R即指《The C Programming Language》一书的作者Kernighan和Ritchie二人,这是世界上第一本介绍C语言的书,而K&R风格即指他们在该书中书写代码所使用的风格。

漂亮的代码千篇一律,乱七八糟的代码Ctrl+A+Delete。

0a9f4ecbf055ee8fc87f4c372e447da9.png

(Menci's Blog)

趁大家上手的时间不长,

培养优良的写码习惯也是很重要的。

(具体内容请同学们查阅百度百科)

a44ceae102e08628aad3202268b26142.png

No.9 滥用goto语句,降低代码可读性

f2dac81594708b5267a3fde8af111a44.png

No.10 变量溢出问题

在定义变量的时候注意自己需要的数据大小,确定需要的是单精度还是双精度,整形还是浮点型,否则会出现奇奇怪怪的数据。(比如意外的负数)

8bf33f764e2d22a8b92db8cca22eab3f.gif

No.11 程序运行时进行编译

明明代码并没有错误却无法成功编译,

并且出现了这样的错误提示。

f4e42e3ea6e09e485da76a70b5f25527.png

No.12 Runtime Error问题

原因可能是数组开小了、运行时间过长(原因包括代码冗长、方法有误、情况考虑不到位以至于计算范围得扩大)等等。

要注意,一般在题中都会提到某些未知数的范围,在开始写代码的时候就将数组大小调整好。当然,有一些小朋友在一开始时就将数组开得特别大,虽说较为方便快捷,但是会浪费比较多的空间。

6480998e59f375b31de368de53a1e386.gif

No.13 遇到问题苦苦思索不愿寻求帮助

有些简单问题按自己思维定势是难以发现的。

希望每个小码农都能正视自己的Wrong answer

积极发现问题,以及寻求帮助呀。

5fd2564184ab768a49d6c5ed9559edde.png

希望我们都能快快乐乐地穿格子衫。

感谢于瀛老师协助!

2f8507f6f760f52b97f3cf658b0a8a9b.png

封面图 / 戴伯钦

资料 / 于瀛老师 亓儒琛

文案 / 黄展仪

排版 / 戴伯钦

监制 / 卢金雨

74b9e8a7d93f4946e0a32a37cbdfc940.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值