A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

5黑马币
#include<stdio.h>
void main()
{   unsigned int i;
for(i=10;i>=0;i--)
printf("%d",i);
printf("\n");
}


最佳答案

查看完整内容

该程序运行时有两个警告:1.return type of 'main' is not 'int' [-Wmain-return-type] 原因:c/c++中并没有定义 void main() 这个函数,而是定义了int main( void ) 和 int main( int argc, char *argv[] ),所以编译器会发出警告(仍可以运行)。 操作系统是根据main()的返回值来决定接下来做什么的。可以自定义 void fun() 函数,这会涉及到其他东西,如:函数参数、指针、值传递、函数调用 等 ...

10 个回复

倒序浏览
该程序运行时有两个警告:1.return type of 'main' is not 'int' [-Wmain-return-type]
原因:c/c++中并没有定义 void main() 这个函数,而是定义了int main( void )  和  int main( int argc, char *argv[] ),所以编译器会发出警告(仍可以运行)。
               操作系统是根据main()的返回值来决定接下来做什么的。可以自定义 void fun() 函数,这会涉及到其他东西,如:函数参数、指针、值传递、函数调用
              等,楼主可以学习相关知识。
2.comparison of unsigned expression >= 0 is always true [-Wtautological-compare //这个警告是致命的,会造成程序异常

   原因:在计算机中有无符号数和有符号数,而数的表示又有多种表示形式,这涉及到《计算机组成原理》的相关知识。
                说简单点:unsigned定义的是无符号数,即正整数,这是警告的问题所在。但是有更深层的原因,当i = 0时,执行i--(i = i - 1),即将i - 1(-1)的赋
                值给i,而- 1是负数,在计算机中是以反码的形式表示,将其赋值给unsigned 定义的变量i将是一个很大的整数,就这样造成了死循环。
  1. #include<stdio.h>
  2. int main()
  3. {
  4.     int i;
  5.     for (i = 10; i>=0; i--)
  6.     {
  7.         printf("%d ", i);
  8.     }
  9.     printf("\n");
  10.     return 0;
  11. }
复制代码
希望可以和楼主多多交流


回复 使用道具 举报
C语言的编译标准中,认为void main (),是错误的,你这样写的意思应该是,不要求返回值,但是c中默认是int main (),这是其一,还有unsigned int 取值范围是大于0的,所以i >= 0,这句是没有意义的
回复 使用道具 举报
韩胜辉 发表于 2015-3-1 17:58
C语言的编译标准中,认为void main (),是错误的,你这样写的意思应该是,不要求返回值,但是c中默认是in ...

#include<stdio.h>

int main()
{   int i;
    for(i=10;i>=0;i--)
        printf("%d",i);
    printf("\n");
    return 0;
}
你试试这个程序
回复 使用道具 举报
亲,i 的定义问题,你定义unsigned int i 则 i为无符号整形,那么在for语句中 i>=0,永远成立,main函数将进入无休止的for循环。     只需将i定义为  int i 就够了。亲,请珍惜黑马币,技术分横重要。
回复 使用道具 举报
风中一场梦 发表于 2015-3-1 19:58
亲,i 的定义问题,你定义unsigned int i 则 i为无符号整形,那么在for语句中 i>=0,永远成立,main函数将进 ...


#include<stdio.h>
void main()
{    int i;
for(i=10;i>=0;i--)
printf("%d",i);
printf("\n");
}
回复 使用道具 举报
楼上说了.
回复 使用道具 举报
对于有符号整数和无符号整数不了解的话,建议看看计算机组成原理中的数的表示。不仅有符号数,还有单、双精度浮点数的讲解。
回复 使用道具 举报
这是c语言吧
回复 使用道具 举报
将i定义为int类型会比较好些
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马