安静了。 发表于 2014-4-12 16:42:48

一段c的代码,第一次发帖子,希望大家能帮忙。谢谢

下午同学发给我一段c的代码,我有点看不懂,望大神指教是在c free 5运行截图的

#include"stdio.h"

int main()
{
        int i=0,tab[]={0,1,2,3,4,5,6,7,8};
        int x=8;
       
        while( 3 & tab!=x )
        {
                printf("%d\n",i);
                i++;
        }

        return 0;
}


这是运行的结果是:

可是当我改成 int x=9时: 这个只是截图了一部分,结果显示的是从0~119。

不太理解其中的原因。希望大家能给出解答。谢谢!

swsm 发表于 2014-4-12 16:42:49


#include"stdio.h"

int main()
{
    int i=0,tab[]={0,1,2,3,4,5,6,7,8};
    int x=8;
    while( tab!=x )
    {
      printf("%d\n",i);
      i++;
    }
   
    return 0;
}
//程序改了,如果是8的话就打印0-7如果是9的话就会在内存中继续找(接着tab数组后面)满足9的数字,找到了就会打印i跳出while循环程序结束,(打印的i是随机的)!!

向往青莲 发表于 2014-4-12 16:45:24

代码时错的。。。。。。。。。。。。。。。。。。。。。。。。。。。
错的。。。。。
错。。。。
tab!=x 。。。类型都不一样。。。还比较?

大黑鱼 发表于 2014-4-12 17:41:51

对!我觉得应该是这样

#include<stdio.h>

int main()
{
      int i=0,tab={0,1,2,3,4,5,6,7,8};
      int x=8;
      
      while( 3 & tab!=x )
      {
                printf("%d\n",i);
                i++;
      }

      return 0;
}
这是运行结果:
0
1
2
3
4
5
6
7
Press any key to continue
当改为9时结果应该是不变的。

大黑鱼 发表于 2014-4-12 17:43:43

本帖最后由 大黑鱼 于 2014-4-12 17:45 编辑

大黑鱼 发表于 2014-4-12 17:41 static/image/common/back.gif
对!我觉得应该是这样

#include

tab!=x,打错了,不好意思!打不上中括号?tab后加中括号里边是i

zhang206zyx 发表于 2014-4-12 23:36:21

3&在这里没有实质的意义,去掉他你就懂了!相当于在打印tab数组的前几个不等于x的值

牡丹花下死做鬼 发表于 2014-4-13 00:27:14

&是位运算
比如3&4
首先要转换成二进制就是
0011&0100 然后一一对应如果都是1则为1有一个是0就是0
所以 3&4 == 0000
其他的你应该都看得懂的吧
页: [1]
查看完整版本: 一段c的代码,第一次发帖子,希望大家能帮忙。谢谢