当前位置: 代码迷 >> C语言 >> 实在是解决不了了![求助]
  详细解决方案

实在是解决不了了![求助]

热度:151   发布时间:2006-05-07 22:58:00.0
以下是引用疯狂VC在2006-5-7 22:32:00的发言:
论坛大哥:为什么我在a=gys(int num1,int num2);里面对num1和num2指定为int型会出错呢!

你那不是指定类型,而是重新定义变量
在C89标准中是不允许在程序中这样定义变量的,比如
for(int i=0;i<100;i++);
这样的语句是非法的

所以,你要实现你说的指定为int类型,可以这样
gys( (int)num1,(int)num2 );
这样做强制转换

但是这样做是很没必要的,因为你在定义num1和num2的时候他们本来就是int型
所以,你这样写就可以了
gys( num1,num2 );


----------------解决方案--------------------------------------------------------
以下是引用疯狂VC在2006-5-7 22:44:00的发言:
谢谢5楼上的兄弟!
那个c和d是我在调试的时候加上的!
忘了删了!
看出来你很细心啊!
再问一下那个main()函数中return 0很重要吗?
我在编译的时候没加它也可以得到正确的结果!
还有就是你的程序为什么还要再多出一个判断num1和num2大小的语句呢!
不用判断也可以啊!

return 0不加会被警告,不过也能运行,如是void main()就不要加了,

至于判断num1和num2大小,我看了,不加也可以;
----------------解决方案--------------------------------------------------------

Re:论坛9楼
a=gys(int num1,int num2) /*这里有错!表达式语法错在main函数中*/
上面这个语句是我的程序里的!
a = gys(num1, num2) ;
这个语句是你的程序里的!

我只是想比较一下,说明一下自己的错误有多低级!




下面再总结一下吧!
关于这个分号的!(又看了一遍书!)
不加分号的时候!
被调函数在在主调函数后面,如果一楼的程序main()和gys()反过来!即:gys在后main在前!当然了,这时候还要对gys()进行必要的声明!
这个时候在a=gys(int num1,int num2)语句后是不用加分号的!
加分号的时候
这个就不用说了!




----------------解决方案--------------------------------------------------------
return 0;的作用在windows/dos下也许不那么明显,但是在UNIX/LINUX的管道操作中就非常致命了
----------------解决方案--------------------------------------------------------
以下是引用神vLinux飘飘在2006-5-7 22:58:00的发言:

你那不是指定类型,而是重新定义变量
在C89标准中是不允许在程序中这样定义变量的,比如
for(int i=0;i<100;i++);
这样的语句是非法的

所以,你要实现你说的指定为int类型,可以这样
gys( (int)num1,(int)num2 );
这样做强制转换

但是这样做是很没必要的,因为你在定义num1和num2的时候他们本来就是int型
所以,你这样写就可以了
gys( num1,num2 );


明白了
谢谢!!
----------------解决方案--------------------------------------------------------

回复:(神vLinux飘飘)return 0;的作用在windows/dos...
以下是引用神vLinux飘飘在2006-5-7 23:10:00的发言:
return 0;的作用在windows/dos下也许不那么明显,但是在UNIX/LINUX的管道操作中就非常致命了

谢谢,在下受教了。


----------------解决方案--------------------------------------------------------
又学到了东西!
----------------解决方案--------------------------------------------------------
以下是引用疯狂VC在2006-5-7 23:09:00的发言:

下面再总结一下吧!
关于这个分号的!(又看了一遍书!)
不加分号的时候!
被调函数在在主调函数后面,如果一楼的程序main()和gys()反过来!即:gys在后main在前!当然了,这时候还要对gys()进行必要的声明!
这个时候在a=gys(int num1,int num2)语句后是不用加分号的!
加分号的时候
这个就不用说了!



又来问题了!! 是编译工具的问题还是书上错了啊!!??
是这样的!昨天没有验证不加分号的情况就发帖了!今天又试了一下!竟然不能通过编译!
书上写着《C程序设计(第二版)》第152页的例8,5第五行的那个语句不加分号是能通过编译的!
"语句缺少" ; "在main函数中"!
这个是书的错还是我的工具的事啊?
我用的是win-tc


----------------解决方案--------------------------------------------------------
路过,路过,路过!!!
----------------解决方案--------------------------------------------------------
以下是引用疯狂VC在2006-5-8 8:52:00的发言:

又来问题了!! 是编译工具的问题还是书上错了啊!!??
是这样的!昨天没有验证不加分号的情况就发帖了!今天又试了一下!竟然不能通过编译!
书上写着《C程序设计(第二版)》第152页的例8,5第五行的那个语句不加分号是能通过编译的!
"语句缺少" ; "在main函数中"!
这个是书的错还是我的工具的事啊?
我用的是win-tc

分号是要加的
是书上的错误吧


----------------解决方案--------------------------------------------------------