自己C代码中逗逼的错误- -!

今天在写一个代码的时候发现了一个问题 大家可以先瞅瞅
#include<stdio.h>
int main()
{
    int x=32;
    int count=0;
    int data;
    printf("please enter an number:");
    scanf("%d",&data);
    while(x--);
    {if(data&0x1==1)
        count++;
               
    data = data >> 1;
    }
    printf("%d",count);
    return 0;
}

这个代码的原意是输入一个数字 求他二进制中一的个数。这是我的缘代码。其中有一个很逗逼的错误。导致这个代码总是只能输出0或1.

我再贴一个和这个同一问题的正确的代码

//#include<stdio.h>  
    //int main()  
    //{  
    //    int i,num,count=0;  
    //    scanf("%d",&num);  
    //    i=32;/*32或64位比特位*/  
    //    while(i--)  
    //    {  
    //         if(num&1==1)count++;  
    //         num=num>>1;  
    //         /*>>右移运算符;右移时负数补1、正数补0,num>>1指右移1位*/  
    //     }  
    //     printf("count=%d",count);  
    //return 0;  
    //}  

当然这个跟我的错误没有太大的关系。

我的代码的错误问题在于在进行循环的时候,while语句的条件后面跟了一个分号。乍一看可能觉得没有问题。我们C中很多代码后面都会跟一个分号结句。但是这里却会出现错误,这并不是一个编译错误所以代码可以正常输出。但是,while语句的条件后是不需要分号结局的。所以我们添加了一个分号相当于一个空语句。配合上后面的分号简直是做了一个大死、等于说这个循环里面是一个空语句。所以循环到最后肯定毛都没有233

    这算是一个逗逼的错误写到这里纪念一下QAQ


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值