鱼C论坛

 找回密码
 立即注册
查看: 4935|回复: 13

出错问题2

[复制链接]
发表于 2013-6-16 12:07:58 | 显示全部楼层 |阅读模式
1鱼币
5 C:\Documents and Settings\Administrator\桌面\main.c [Warning] return type of 'main' is not `int'
要对程序怎么修改???
#include<stdio.h>
#define PRICE 30;
void main()
{
      int num, total;
      num=10;   
      total=num*PRICE;
      printf("total=%d\n",total);
}

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-16 12:31:55 | 显示全部楼层
#include<stdio.h>
#define PRICE 30;
int main()
{
      int num, total;
      num=10;   
      total=num*PRICE;
      printf("total=%d\n",total);
     return 0;
}

程序没有问题,编译器的问题
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-16 14:57:10 | 显示全部楼层
你在宏定义时多加了个分号,改为这样吧#define PRICE 30
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-16 19:50:38 | 显示全部楼层
本帖最后由 ilyou2049 于 2013-6-16 19:51 编辑
  1. #include<stdio.h>
  2. #define PRICE 30//这里多了个分号
  3. void main()
  4. {
  5.         int num, total;
  6.         num=10;   
  7.         total=num*PRICE;
  8.         printf("total=%d\n",total);
  9. }
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-16 22:56:26 | 显示全部楼层
宏定义时多加了个分号
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-17 02:25:32 | 显示全部楼层
主要是编译器问题,main函数要int类型的
改成
int main ()
{ ... }
应该可以。
还有就是宏定义不要加分号,宏定义作用是直接替换,可以用预编译看结果
会把分号一起替换进去的。
Linux 下的预编译是 gcc -E x.c -i x.i
vc 下要在命令行输入 cl /EP x.c > x.i
看看预处理后的效果
把#define PRICE 30; 改为
#define PRICE 30
就可以了,应该没有问题的~~都是上楼的解决方法,合了一下。
支持支持,一起学习学习。{:7_155:}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-17 03:41:54 | 显示全部楼层
#define PRICE 30, 你多了一个分号
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-17 07:30:29 | 显示全部楼层
把#define这句后面的分号去掉,
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-17 14:13:14 | 显示全部楼层
多个分号,同意
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-6-17 16:55:05 | 显示全部楼层
这次编程对了,那为啥运行对话框闪一下就消失了呀????
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-17 17:12:09 | 显示全部楼层

汗 程序有问题 编译器没有问题
你弄错了
这里错的是程序
void main
这个写法属于实现定义行为
编译器可以实现也可以不实现

对于这里编译器不允许一个 非 int main的做法符合C标准
你怎么能说编译器不对
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-17 18:30:30 | 显示全部楼层
我是师兄 发表于 2013-6-17 17:12
汗 程序有问题 编译器没有问题
你弄错了
这里错的是程序

这个程序是正确的
这个程序即使是楼主最开始的那样#define PRICE 30;
有这个冒号也是没有错的(当然逻辑上是错的)

#include<stdio.h>
#define PRICE 30;
void main()
{
      int num, total;
      num=10;   
      total=num*PRICE;          //编译器理解成  
total=num*30;;    在这里多一个分号完全没有问题
      printf("total=%d\n",total);
}


之所以会出现一个警告return type of 'main' is not `int'   ,完全是因为编译器的
原因,比如你用vc6编译这个程序没有任何错误,任何警告。
在报错的编译器上改成int main() return 0;    也会变成没有错误and没有警告
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-17 22:58:44 | 显示全部楼层
友来友网 发表于 2013-6-17 18:30
这个程序是正确的
这个程序即使是楼主最开始的那样#define PRICE 30;
有这个冒号也是没有错的(当然逻辑 ...

我就是说 void main 这样的写法算是错的
依赖编译器

你这里误导别人 说的编译器错误 而void main的写法没问题
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-17 23:00:01 | 显示全部楼层
友来友网 发表于 2013-6-17 18:30
这个程序是正确的
这个程序即使是楼主最开始的那样#define PRICE 30;
有这个冒号也是没有错的(当然逻辑 ...

define那个问题
我一个字没提
那之后导致
total=num*30;;
多了一个空语句 ; 在这里没什么问题
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-23 11:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表