【个人记录】关于初学者刚开始可能遇到的一些Dev c++报错及其解决方案(随缘更新)_[error] expected ';' before 'return-程序员宅基地

技术标签: 初学  C语言  c语言  

个人是从2020年8月下旬才开始接触C语言的,看(白嫖)的是浙江大学翁老师的视频,以下是一些遇到的报错问题和解决方法       

由于改用了VScode,所以减少了dev C++的使用频率,但是以后应该还是会在两边都跑遍的(下次一定)

 题外话:在编写程序时,可以先用特殊值代入,想好一个直观的框架,然后再进行代码编写。

·Error 类型


 1.分号
·[Error] expected ';' before 'return'

  这个问题主要是:老忘记打分号(不过问题不大,反正编译都不能过)
  PS:你的编译器只会告诉你,这一段前面缺一个分号,但是你其实要加在上一句话

	int main()
	{
    
		printf("Hello world!\n")//你要加在这一行末尾
		return 0;//错误信息显示:[Error] expected ';' before 'return'
	}
   特别要注意:do while语句后方,while后面要分号(半角)
  例如:
	int x = 0;
	do{
    
		++x;
		printf("Hello world!\n");
	} while (x < 10);
   另外要注意:while语句后方,不要乱加分号
  例如:
	int x = 0;
	while (x < 10);
	{
    
		++x;
		printf("Hello world!\n");
	}
   这等价于
	int x = 0;
	while (x < 10)
		;//这里边代表什么都不做,然后x一直小于10,陷入死循环
	{
    
		++x;
		printf("Hello world!\n");
	}
   所以推荐这样写代码:
	int x = 0;
	while (x < 10) {
    //这里就很明显不需要分号了
		++x;
		printf("Hello world!\n");
	}

 2.忘记关终端/命令行
·[Error] ld returned 1 exit status

  这个问题主要是由于终端/命令行(黑黑的跟cmd一样的窗口)没关;

  通常在调试时候停止了调试之后,再次进行编译的时候出现。

  长久有效的解决方案:也许以后不要点叉叉停止调试,直接关闭命令行来停止调试就好了。

  *借阅了 CSDNid: 汝之宿命 的博客内容

 3.括号忘记加(出大问题)
·[Error] expected declaration or statement at end of input

  这个可能是:
   1.某一变量在使用前没有声明(这个只是道听途说,我的dev C++编译器没有这种情况过),但是大多是 4 的那种报错
   2. ★某 个★ 地 方 少了括号: 简 直 要 命
     这个问题就大了,它既可能出现在你的 main 函数中(就是你的主体代码),又可能出现在你的自定义函数中,而你的报错……它只会显示在最后一行…( 太蠢了!)
  *借阅了 CSDNid: dengw8 的博客内容

 4.变量未定义
·[Error] 'x' undeclared (first use in this function)

  哎哟 ~ 这个问题真是太好办了,定义一下就行,你的编译器肯定也会给你准确定位的。

 5.变量未定义

  

·[Error] variable-sized object may not be initialized

·Warning 类型

 1.

  据说以下两种情况会显示 Warning 报错(苹果的操作系统的自带编译器会),但是我的Dev C++没有报错,而是编译通过且warning个数依旧是0(太不负责任了) //2020.8.31划去

  目前发现,以下 (3) 4 种情况均在苹果的系统上看到过warning,难道 dev C++ 不会报 warning ??? //2020.9.2划去
  目前发现以下 4 种情况不会在 dev C++ 出现 warning 类型报错,但是会在 mac 上的编译器报错。( 而今天,我终于发现了 dev C++ 也会报的错了,详情见本大条目的第 2 条目 )

 其一

  一般是在一些本大多用于判断的句子里使用了赋值语句

	if ( a = 20 ) {
    //这里的等号应该是双等号表示判断 ==
		...;
	}

 报错信息大概是类似这样的:

if ( a = 20 )
      ~↑~
" = " --> " == "
1 warning generated.
 其二

  一般是在非 for 的地方用了逗号

int a = 3+4,5+6;//建议不要在 for 以外用这种奇怪的运算符
		    ~↑~(result unused)
1 warning generated.
 其三

  一般是调用函数的时候忘记打括号了

·warning: expression result unused [-Wunused-value]//来自mac的C语言IDE

  例如这样的:

	void helloWorld()
	{
    
		printf("Hello World!");
		
		return;
	}
	
	int main()
	{
    
		helloWorld;//这里应该写 helloWorld();
	
		return 0;
	}

  会显示

warning: expression result unused [-Wunused-value]//来自mac的C语言IDE
	helloWorld;
	↑~~~~~~~
1 warning generated.

1

	#include <stdio.h>
	
	void hello(int i)//这要求int型↓
	{
    
		printf("hello! %d\n",i);
		return;
	}

	int main()
	{
    
		hello(2.4);//这里输入了一个double型
		printf("hello!\n");
	
		return 0;
	}
 2. const 后忘记加数据类型( 会默认为int )
	const NUMBER = 10;//应当写:const int NUMBER = 10;
·[Warning] type defaults to 'int' in declaration of 'NUMBER'

·无报错无警告 类型(重灾区)

 //注:以下显示都不是在控制台,而是在终端/命令行

 1.scanf 未指向地址
Process exited after 1.625 seconds with return value 3221225477
//上面的数字可能是任意的其他值

  这大多是因为你在scanf里指向的是变量而不是地址,什么意思呢?你scanf里面的变量没加 & 符号。
  这类问题都挺大的:经常检查了半天结果才意识到 & 没加,十分蠢,还以为是其他语句出错的
  长久有效的解决方案:忘记一次就翻开词典,抄5个英文单词十遍,中、英文加音标

 2.数据类型出错

  一般分为两种:

   A.scanf:

    调试的时候发现一个 double 数值特别奇怪(初始化了也奇怪);
    多半是用了 %d 去指向这个变量的地址了。

    调试的时候发现一个 int / double 数值为初始值/特奇怪(未初始化的时候);
    多半是用了 %lf / %f 去指向这个变量的地址了。

    请注意:scanfdouble%lf ,而 printf%f

   B.printf:

    输出的时候发现一个 int / double 数值特别奇怪(初始化了也奇怪);
    基本上同理,就不过多赘述了。(懒)

 3.数组溢出~~(迷惑行为)~~

  这在有些情况下是会崩的(不同电脑)

	#include <stdio.h>

	int main()
	{
    
		int a[5];
		a[0]=5;
		a[5]=9;//赋值a[5]是有错的,因为只有0-4共5个数的数组
		printf("a0=%,a5=%d",a[1],a[5]);
	
	return 0;
	}

  但是在我的dev C++上却能有结果能有输出
因为这里的数组后面刚好是可以修改的,如果碰上不可修改的地方,比如0地址,就会自动崩溃。

a0=,a5=0
--------------------------------
Process exited after 0.02038 seconds with return value 0

 3.数组过大

  在主函数内声明int a[1000000],运行出错
 visual studio code:

 # segmentation fault

 dev cpp: 程序运行反馈最后的 return value 不是0就说明程序运行崩溃

Process exited after 0.2345 seconds with return value 3221225725
请按任意键继续. . .	

 原因:局部 / 本地变量所能分配的空间较小(2MB),1e6(1,000,000)已经4MB多了,无法分配这么多内存。
 解决方案:使用全局变量(变量定义放在 int main 前面即可)
 详情见:红豆布丁 大大的博客





  特别鸣谢:Richard-Cai 的博客内容,使用各种 CSDN 编辑器的字体的教程*

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_47287635/article/details/108304873

智能推荐

Apache 配置Https 转发Tomcat ,tomcat中的项目也可以使用https-程序员宅基地

文章浏览阅读995次,点赞9次,收藏19次。安全认证 Apache 配置Https 转发Tomcat,tomcat中的项目也可以使用https

Sublime Text3 之二十个强大插件(必须收藏)_sublime3插件推荐-程序员宅基地

文章浏览阅读1.5w次,点赞2次,收藏15次。作为一个开发者你不可能没听说过Sublime Text 3。不过你没听说过也没关系,下面让你明白。 SublimeText是一款非常精巧的文本编辑器,适合编写代码、做笔记、写文章。它用户界面十分整洁,功能非同凡响,性能快得出奇。这些非常棒的特性包括任意跳转(Goto Anything)、多重选择(multiple selections)、指令面板(command palette)、免打扰模式(_sublime3插件推荐

docker-compose elk部署elk 单节点版本_docker-compose 部署elk 配置-程序员宅基地

文章浏览阅读659次,点赞6次,收藏7次。机器分配。_docker-compose 部署elk 配置

python学习手册条件-总算晓得python学习手册正式版-程序员宅基地

文章浏览阅读44次。为了提高模块加载的速度,每个模块都会在__pycache__文件夹中放置该模块的预编译模块,命名为module.version.pyc,version是模块的预编译版本编码,一般都包含Python的版本号。例如在CPython 发行版3.4中,fibo.py文件的预编译文件就是:__pycache__/fibo.cpython-34.pyc。这种命名规则可以保证不同版本的模块和不同版本的pytho...

用 Ninja and GN 来加速 C++构建-程序员宅基地

文章浏览阅读1.8k次,点赞2次,收藏4次。NinjaNinja 原意是忍者的意思,它是一个专注于速度的小型构建工具。它是一个构建系统。 它将文件的相互依赖关系(通常是源代码和输出可执行文件)作为输入,并快速编排构建它们。运行Ninja,默认情况下,它会在当前目录中查找名为 build.ninja 的文件并构建所有过时的目标。 您可以指定要构建的目标(文件)作为命令行参数。还有一个特殊的语法 target^ 用于将目标指定为某个规则的..._c++ gn构建

Objective-c 数字对象(NSNumber)_oc 如何判断一个nsnumber对象是一个什么类型的值-程序员宅基地

文章浏览阅读741次。在Objective-c中有int的数据类型,那为什么还要使用数字对象NSNumber?这是因为很多类(如NSArray)都要求使用对象,而int不是对象。NSNumber就是数字对象,我们可以使用NSNumber对象来创建和初始化不同类型的数字对象。如:[cpp] view plaincopy#import NS_oc 如何判断一个nsnumber对象是一个什么类型的值

随便推点

npm ERR! Failed at the [email protected] postinstall script. npm ERR! This is probably not a problem-程序员宅基地

文章浏览阅读8.8k次,点赞10次,收藏10次。今天写代码要安装sass的时候,疯狂报错看的第一遍,找不到sass。偶,简单。我看了下package.json的依赖关系。果然如我所料,没有依赖于是手动写上依赖,删除node-moudle重新下载,运行项目,卧槽,还报错。查看node-sass文件,点击,里面没有文件无奈的我只能谷歌,の,问题出在下载源上下面是解决方法下载sass之前,要先修改源npm config set s..._npm err! failed at the [email protected] postinstall script. npm err! this is

各模组相关interface_模块 mass additions post 因错误而终止。-程序员宅基地

文章浏览阅读509次。AP接口表:AP_INVOICES_INTERFACEAP_INVOICE_LINES_INTERFACE涉及的请求:应付款管理系统开放接口导入涉及案例: 运费导AP、费用导APPO接口表:申请:PO_REQUISITIONS_INTERFACE_ALL涉及请求:导入申请采购:po_headers_interfacepo_lines_interf_模块 mass additions post 因错误而终止。

C++:提高进程权限_c++进程提权-程序员宅基地

文章浏览阅读372次。提高进程权限是 Windows 程序开发中非常有用的技能,它可以使我们获得更多的控制权,执行更多的操作。特别地,我们演示了如何使用 Windows API 函数,以及如何将提高权限的代码封装在一个 C++ 类中。然而,在某些情况下,我们必须提高进程的权限,例如需要访问系统资源或执行特权操作时。特别地,我们将演示如何使用 Windows API 来提高进程的权限,以及如何使用 C++ 语言进行封装,使代码更加易于使用和理解。为了使代码更加易于使用和理解,我们可以将提高进程权限的功能封装在一个 C++ 类中。_c++进程提权

中文垃圾邮件分类。2种特征提取,词袋特征,IFIDF分布特征,贝叶斯NB,LR,SVM各自表现的实战示例代码_ham_data.txt-程序员宅基地

文章浏览阅读2.3k次,点赞5次,收藏22次。结论:数据:ham_data.txtspam_data.txtstop_words.utf8数据处理:"""@author: liushuchun"""import reimport stringimport jieba# 加载停用词with open("dict/stop_words.utf8", encoding="utf8") as f: ..._ham_data.txt

EDA、PLD、FPGA等名词解释_hdl ,lut ,asic ,soc,jtag ,vhdl ,fpga ,rtl,sopc,uar-程序员宅基地

文章浏览阅读1.6k次,点赞13次,收藏11次。EEPROM:电可擦除可编程只读 存储器。EPROM:可擦写可编程只读存储器。FPGA:现场可编程逻辑门阵列。CPLD:复杂可编程逻辑器件。PROM:可编程只读存储器。PLD:可编程逻辑器件。SOPC:可编程片上系统。SRAM:静态随机存储器。GAL:通用阵列逻辑器件。EDA:电子设计自动化。ASIC:专用集成电路。PLA:可编程逻辑阵列。RAM:随机存取存储器。ALM:自适应逻辑模块。HDL:硬件描述语言。RTL:寄存器传输级。PIA:可编程连线阵。_hdl ,lut ,asic ,soc,jtag ,vhdl ,fpga ,rtl,sopc,uart,isp,ip,hdl ,eda ,pcb

软件心学格物致知篇(4)研发绩效考核之殇-程序员宅基地

文章浏览阅读807次,点赞22次,收藏9次。假如猪,鸡,鹦鹉三种动物准备创业开一家欧式早餐店:提供三明治(面包,鸡蛋,培根),那么他们分别需要付出什么?