• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

怎么判断一个值在这个范围之内啊?

瞎折腾 2016-11-26 浏览量:1306
怎么比较一个数是不是在两个数之间呢?比如x是不是在64-128之间,如果用if不行啊!能不能用一个语句实现。
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 用IF语句是可以的,但是IF语句不能这么写:if(64<x<128),我一开始也没怎么注意这样写过,编译器也不报错,但是程序就是不执行这个条件,后面换了一种写法:if((x>64)&&(x<128))这样写绝对就没问题了。另外像其他大神说的三目运算符确实也是个不错的选择,但是对我这种菜鸟来说,还是喜欢用if这样的写法,呵呵,看个人习惯吧……
    • 发布于 2016-11-28
    • 举报
    • 评论 3
    • 0
    • 0
瞎折腾 回复了 SingleYork:我就是这么写的,问什么不报错!但是执行起来x=0x00,可以,其他就完蛋了! 回复
SingleYork 回复了 SingleYork:你是这么写的iif(6464)&&(x<128)) 回复
SingleYork 回复了 瞎折腾:你是怎么写的?至于编译器不报错我也不知道怎么解释,但是:if((x>64)&&(x<128))这样写肯没错! 回复

其他答案 数量:8
  • 嗨,以下是參考寫法

    unsigned char x; //0<=x<=255
    bool result;
    ... result=(x>=64 && x <=128)? true:false; //包含頭尾
    result=(x>64 && x <128)? true:false; //不包含頭尾
    希望對您有用


    • 发布于2016-11-26
    • 举报
    • 评论 2
    • 0
    • 0
guyuemao 回复了 MOP :腻害了 回复
zhangsf_chongzai 回复了 MOP :厉害 回复

  • 另外函數的寫法如下,您在看您的需求,另外要使用bool型態需在檔案頭加上#include <stdbool.h>

    bool check(unsigned char x)
    {
       return (x>=64 && x <=128)? true:false;
    }
    以上
    • 发布于2016-11-26
    • 举报
    • 评论 5
    • 0
    • 0
999 回复了 MOP :这样的话就不必用?:了。若要用?:最好写成return x>=64?x<=128:false;或者return x<64||x>128?false:true; 回复
MOP 回复了 999 :是可以的唷,但一般我們還是寫比較易懂的寫法,這樣之後比較好維護喔^^ 回复
999 回复了 MOP :这冗余的写法 和“易懂”“好维护”没啥关系吧。 回复
MOP 回复了 999 :嗯,我知道厲害的人很多,但要有較通俗直觀的寫法又不失冗長,可能對您自身不適用,您可以問看看哪種寫法比較直觀好理解^^ 回复
999 回复了 MOP :好吧,再多做争论也没啥必要了。这写法,但愿真的对LZ这样的萌新有帮助、有一个好的启蒙。^^ 回复

  • 直接IF条件判断啊。。。或者while条件判断。。。这应该是最基础的C了吧
    • 发布于2016-11-26
    • 举报
    • 评论 0
    • 0
    • 0

  • 用if为什么不行?

    就算你用条件运算符,在生成机械码时还是一样的,并不会比使用if的代码量少多少。

    从汇编的角度,要减少代码量或是提高运行速度,还是要用与、或之类的位运算。

    • 发布于2016-11-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以使用?:三目结构
    • 发布于2016-11-27
    • 举报
    • 评论 0
    • 0
    • 0

  • D=(B-A)*(C-B)
    D>0,则B在A、C之间
    D=0,则B至少等于其中一个
    D<0,则B不在A、C之间
    • 发布于2016-11-28
    • 举报
    • 评论 0
    • 0
    • 0

  • if(64<x<128)   你是这么写的?

    C语言中没有连续比较大小的运行,这个运算是要分成前后两部分,第一部分是  64 <x ,这个运行的值是成立或不成立,也就是有两个位,即x=0或x=1.之后,再就是if(1<128) 或if(0<128),即,总是成立的。

    上面的写法也就是if((64<x)<1128)了。


    • 发布于2016-11-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 三目运算的嵌套

     u8 x=25,Y=1,N=0,K;
      K=(x>=64)?(x<=128?Y:N):N;

    • 发布于2016-12-08
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

怎么判断一个值在这个范围之内啊?