❶ c语言helloworld代码是对的,但编译错误
写c语言的时候,如果代码没错,这只能说明语法没有出错,直接导致的结果就是能编译通过,并不意味着执行的结果就是正确的。影响c语言代码执行结果的因素非常多。
一、指针的不正确运用;
二、变量精度问题。char,int,unsigned int,long ,float等,如果变量精度使用不正确,也会影响运算结果;
三、运算符的应用不正确。例如除,取余的区别;
四、正负符号位;
五、运算符的优先级使用;
六、编译器不同。各种编译器也可能造成结果不一致;
C语言虽然是一门比较简单的语言,但是要掌握这些细节,其实并不容易。
❷ C语言编译总是提示我错误怎么回事啊倒数第二行!
给你改下吧
第一,头文件声明了两次
第二、主函数用了两次
去掉就行了,很简单
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("Hello,My Computer!\n");
system("PAUSE");
return 0;
}
❸ 求助~关于这个程序,编译出错误,不知道怎么改,我C++不好。
错误1 for(int i=1;i<45;i++) cout<<prezname[i]<<endl; 后者的i是未定义的,因为i只在for循环内有效。是个局部变量,你在外部引用编译器就当做你没定义
错误2 found,where是局部变量,如果你要在全局中请定义全局变量,而且where是关键字,是不能用做变量名的。
错误3 所有东西要先定义后使用,你在void insertion(prezname keyname)函数中调用binsearch函数时没在之前定义,建议把你需要调用的函数卸载你调用之间,这样免去声明环节。
错误4 void deletion(prezname keyname)
{
bool found
binsearch(keyname,found,where)
中的分号哪里去了。
先改改吧,不行再问吧,祝你好运!
❹ C语言:下面的代码为什么会出现编译错误应当怎么改正
错误出在a=sum;这一句——因为构成C语言程序的基本单位是函数而不是C语句,这里的a=sum;不在任何函数中,所以编译器无法处理而出错。把它放到主函数中的printf("%d
",a(3,5));之前就可以了。函数外只能进行全局变量定义或声明,而不能进行其他操作,所以把int (*a)(int, int); a=sum;两句改成int (*a)(int, int)=sum;,让它成为声明变量a并初始化为sum也是可以的。你可以试试。

代码文本:
#include "stdio.h"
int sum(int a, int b);
int (*a)(int, int);
int main(int argc,char *argv[]){
a=sum;
printf("%d
",a(3,5));
return 0;
}
int sum(int a,int b){
return a+b;
}
❺ glutInit(&argc, argv);编译错误
这个我不是很清楚,我用vs2010编译是可以的,也同样可以运行显示。你可以换个编译器试试,看可不可以。这只是建议。
❻ C语言中argc与argv怎么用为什么我初始化argc时候老是出错
argc与argv[]是启动C程序时系统传入的,可以直接使用。argc是参数数量,argv是参数表数组。如命令行为“prg.exe 1 2 3”,则argc为4,argv[0]="prg.exe",argv[1]="1",argv[2]="2",argv[3]="3"。以下是LCC-WIN32模板文件(加了一行显示所有参数语句):
/* --- The following code comes from e:\lcc\lib\wizard\textmode.tpl. */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void Usage(char *programName)
{
fprintf(stderr,"%s usage:\n",programName);
/* Modify here to add your usage message when the program is
* called without arguments */
}
/* returns the index of the first argument that is not an option; i.e.
does not start with a dash or a slash
*/
int HandleOptions(int argc,char *argv[])
{
int i,firstnonoption=0;
for (i=1; i< argc;i++) {
if (argv[i][0] == '/' || argv[i][0] == '-') {
switch (argv[i][1]) {
/* An argument -? means help is requested */
case '?':
Usage(argv[0]);
break;
case 'h':
case 'H':
if (!stricmp(argv[i]+1,"help")) {
Usage(argv[0]);
break;
}
/* If the option -h means anything else
* in your application add code here
* Note: this falls through to the default
* to print an "unknow option" message
*/
/* add your option switches here */
default:
fprintf(stderr,"unknown option %s\n",argv[i]);
break;
}
}
else {
firstnonoption = i;
break;
}
}
return firstnonoption;
}
int main(int argc,char *argv[])
{
if (argc == 1) {
/* If no arguments we call the Usage routine and exit */
Usage(argv[0]);
return 1;
}
/* handle the program options */
HandleOptions(argc,argv);
/* The code of your application goes here */
for (int i=0;i<argc;i++)printf("%s ",argv[i]);
return 0;
}
❼ 为什么相同的代码 加上 “int argc, char *argv[]”反而出现错误 高级问题(我是这么觉得)
对程序员来说,main函数是程序的入口点,但是对编译器来说,需要增加附加的初始化代码来处理和操作系统环境有关的东西,诸如命令行参数等,然后再调用main进入用户编写的代码,按照约定,在调用main之前,初始化代码会按照main(int argc, char* argv[])的参数形式将argc,argv放入堆栈,供main中的代码调用。如果main定义成其它参数形式,虽然语法是没有问题,但可能得不到正确的参数。
比如,以下的参数形式多数的编译器能够编译通过
int main() //不需要处理传入参数
int main(int argc) //argc传入参数个数
int main(int argc,char *argv[]) //argc传入参数个数,argv传入命令行字符串数组
int main(int argc, int p) //虽然p定义成整型,但实际传入的仍是命令行字符串数组指针。
int main(int argc, char *argv[], int u) //多了个参数u,前面2项没问题,但对u的存取可能会破坏堆栈。
❽ C++的argc和argv的问题 编译成功但是为什么双击运行报错 在cmd下却可以正常运行代码如下
这是由于你直接运行时,传入的参数只有一个,所以指针错误,访问了野指针。
修改后:
#include<stdio.h>
int main(int argc, char *argv[])
{
char *u = argv[1], *p = argv[2];
int i;
if(argc<2)// 这里判断一下就好了。
return 0;
for(i=1;i<argc;i++)
printf("%s\n",argv[i]);
printf("获取第1个参数是%s\n",u);
printf("获取第2个参数是%s\n",p);
return 0;
}
❾ if(-1 == argc) 是什么情况
-1 == argc 这是一个关系表达式,判断argc是否与 -1 相等
那为什么不写成 argc == -1呢
因为,如果,按照 argc==-1,效果一样,但如果不小心写成 argc = -1 变成一个赋值,显然
会出现语义上的错误,但编译器是不检查语义错误的。这样,显然得不到想要的结果。
但 你这样写 -1 == argc,如果,你不小心写成 -1 = argc,这是语法错误,编译器会帮你检查到出现了错误。以此利用编译器来帮你避免错误。