Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1782141
  • 博文数量: 297
  • 博客积分: 285
  • 博客等级: 二等列兵
  • 技术积分: 3006
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-06 22:04
个人简介

Linuxer, ex IBMer. GNU https://hmchzb19.github.io/

文章分类

全部博文(297)

文章存档

2020年(11)

2019年(15)

2018年(43)

2017年(79)

2016年(79)

2015年(58)

2014年(1)

2013年(8)

2012年(3)

分类: C/C++

2016-08-29 15:33:22

下面的代码在 ubuntu 14.04.3上可以编译,GCC 版本是 4.8.4

点击(此处)折叠或打开

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5.     int my_int;

  6.     printf("Arithmetic Operator");

  7.     my_int=6;
  8.     printf("my_int=%d,-my_int=%d\n",my_int,-my_int);

  9.     printf("int 1+2=%d\n",1+2);
  10.     printf("int 5-1=%d\n",5-1);
  11.     printf("int 5*2=%d\n",5*2);
  12.     
  13. // printf("\n9 div 4=2 remaind 1:\n");
  14.     printf("int 9/4=%d\n",9/4);
  15.     printf("int 9%%4=%d\n",9%4);
  16.     printf("double 9/4=%f\n",9.0/4.0);
  17.     

  18.     my_int=10; //will overwrite previous my_int;
  19.     int my_int;

  20.     printf("Arithmetic Operator");

  21.     my_int=6;
  22.     printf("my_int=%d,-my_int=%d\n",my_int,-my_int);

  23.     printf("int 1+2=%d\n",1+2);
  24.     printf("int 5-1=%d\n",5-1);
  25.     printf("int 5*2=%d\n",5*2);
  26.     
  27. // printf("\n9 div 4=2 remaind 1:\n");
  28.     printf("int 9/4=%d\n",9/4);
  29.     printf("int 9%%4=%d\n",9%4);
  30.     printf("double 9/4=%f\n",9.0/4.0);
  31.     

  32.     my_int=10; //will overwrite previous my_int;
  33.     printf("my_int=10: %d\n",my_int);

  34.     my_int++;
  35.     printf("my_int++: %d\n",my_int);

  36.     my_int+=5;
  37.     printf("my_int+=5: %d\n",my_int);

  38.     my_int--;
  39.     printf("my_int--: %d\n",my_int);

  40.     my_int-=2;
  41.     printf("my_int-=2: %d\n",my_int);

  42.     my_int*=5;
  43.     printf("my_int*=5: %d\n",my_int);

  44.     my_int/=2;
  45.     printf("my_int/=2: %d\n",my_int);

  46.     my_int%=3;
  47.     printf("my_int%%=3: %d\n",my_int);
  48.     
  49.     return 0;
  50.     }
但是在 kali linux 上不能编译,gcc 版本是 5.4.0
编译报错如下。

点击(此处)折叠或打开

  1. gcc arithmetic.c -o arithmetic
  2. arithmetic.c: In function ‘main’:
  3. arithmetic.c:23:9: error: redeclaration of ‘my_int’ with no linkage
  4.      int my_int;
  5.          ^
  6. arithmetic.c:5:9: note: previous declaration of ‘my_int’ was here
  7.      int my_int
但是用{}就能解决掉这个问题:
我在第二次声明变量my_int 之前加了{} ,当然按照道理来说,最后声明的同名变量应该会覆盖前面的变量,所以在GCC 4.8.4 上没有报错,即使没有{}, 而在GCC 5.4.0 我就得
加上{}才能编译通过。

点击(此处)折叠或打开

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5.     int my_int;

  6.     printf("Arithmetic Operator");

  7.     my_int=6;
  8.     printf("my_int=%d,-my_int=%d\n",my_int,-my_int);

  9.     printf("int 1+2=%d\n",1+2);
  10.     printf("int 5-1=%d\n",5-1);
  11.     printf("int 5*2=%d\n",5*2);

  12.     // printf("\n9 div 4=2 remaind 1:\n");
  13.     printf("int 9/4=%d\n",9/4);
  14.     printf("int 9%%4=%d\n",9%4);
  15.     printf("double 9/4=%f\n",9.0/4.0);


  16.     my_int=10; //will overwrite previous my_int;
  17.     {
  18.         int my_int;

  19.         printf("Arithmetic Operator");

  20.         my_int=6;
  21.         printf("my_int=%d,-my_int=%d\n",my_int,-my_int);

  22.         printf("int 1+2=%d\n",1+2);
  23.         printf("int 5-1=%d\n",5-1);
  24.         printf("int 5*2=%d\n",5*2);

  25.         // printf("\n9 div 4=2 remaind 1:\n");
  26.         printf("int 9/4=%d\n",9/4);
  27.         printf("int 9%%4=%d\n",9%4);
  28.         printf("double 9/4=%f\n",9.0/4.0);


  29.         my_int=10; //will overwrite previous my_int;
  30.         printf("my_int=10: %d\n",my_int);

  31.         my_int++;
  32.         printf("my_int++: %d\n",my_int);

  33.         my_int+=5;
  34.         printf("my_int+=5: %d\n",my_int);

  35.         my_int--;
  36.         printf("my_int--: %d\n",my_int);

  37.         my_int-=2;
  38.         printf("my_int-=2: %d\n",my_int);

  39.         my_int*=5;
  40.         printf("my_int*=5: %d\n",my_int);

  41.         my_int/=2;
  42.         printf("my_int/=2: %d\n",my_int);

  43.         my_int%=3;
  44.         printf("my_int%%=3: %d\n",my_int);
  45.     }
  46.     return 0;
  47. }

阅读(1279) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~