精华内容
下载资源
问答
  • 我们可以经常发现在处理SQL Server的时,很多人都会有一句出结果的习惯,但值得注意的是,不恰当的合并处理语句,往往会产生负面的性能,本文针对使用UNION ALL代替IF语句的合并处理做出一个简单的事例,用来说明...
  • 用条件运算符?代替if语句

    千次阅读 2013-10-28 09:32:21
    public class java7_4 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int a=5,b=13,c;...//if(a>b) //c=a; //else //c=b; System.out.
    public class java7_4 {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    int a=5,b=13,c;
    c=(a>b)?a:b;
    //if(a>b)
    //c=a;
    //else
    //c=b;
    System.out.println("a="+a+",b="+b);
    System.out.println("最大值c="+c);
    	}
    
    }
    


    展开全文
  • d) and 'third price' or 'none') #逻辑运算符在if语句中应用的方法技巧: ‘’‘ print(条件1 and 结果1 or 条件2 and 结果2 or 结果3) 相当于: if 条件1: 结果1 elif 条件2: 结果2 else: 结果3 ’‘’ if ...
    彩票程序:
    课上方法:
    import random
    
    # 生成一个随机两位数  作为一个中奖号码
    luck_num = random.randint(10,99)
    print(luck_num)
    luck_num_g = luck_num % 10
    luck_num_s = luck_num // 10
    # 用户输入一个购买的数字
    buy_num = int(input("请输入要购买的两位幸运数字:"))
    buy_num_g = buy_num % 10
    buy_num_s = buy_num // 10
    # 一等奖    两个数字全对  而且顺序一样
    if luck_num == buy_num:
        print("一等奖,奖品《python从入门到升仙》")
    # 二等奖     两个数字全对  但是顺序不一样
        # 购买的个位数字和幸运数字的十位相同 并且 购买的十位数字和幸运数字的个位相同
    elif buy_num_g == luck_num_s and buy_num_s == luck_num_g:
        print("二等奖,奖品《Python从入门到放弃》")
    # 三等奖     只对一个数字
        # 购买的个位数字可能和幸运数字的个位数字相同   或者
        # 购买的个位数字可能和幸运数字的十位相同      或者
        # 购买的十位数字可能和幸运数字的个位相同     或者
        # 购买的十位数字可能和幸运数字的十位相同
    elif buy_num_g == luck_num_g or buy_num_g == luck_num_s or buy_num_s == luck_num_g or buy_num_s == luck_num_s:
        print("三等奖,奖品《Python从入门到住院》")
    # 其它的没有奖 一个数字都不对
    else:
        print("又挣你两块钱~~~")
    
    #方法2
    # import random
    # luck_num = random.randint(11,66)
    # print(luck_num)
    # a = luck_num_gewei = luck_num % 10
    # b = luck_num_shiwei = luck_num // 10
    #
    # buy_num = int(input('please input you number : '))
    # c = buy_num_gewei = buy_num % 10
    # d = buy_num_shiwei = buy_num // 10
    # print((a == c and b == d) and 'first price'or (a == d and b == c) and 'second price' or (a == c or a == d or b ==c or b == d) and 'third price' or 'none')
    #逻辑运算符在if语句中应用的方法技巧:
    ‘’‘
    print(条件1 and 结果1 or 条件2 and 结果2 or 结果3)
    相当于:
    if 条件1:
        结果1
    elif 条件2:
        结果2
    else:
        结果3
    ’‘’
    if 语句 进阶 效果
    ‘’‘
    ‘’‘
    #if   elif    else    都可以直接转换为下面这种格式,注意,输出语句不要写print,直接写输出内容就#好,亲测。
    print( (条件1.1 and 条件1.2) and 结果1 or (条件2.1 or 条件2.2) and 结果2 or 结果3)
    相当于:
    if 条件1.1 and 条件1.2:
        结果1
    elif 条件2.1 or 条件2.2:
        结果2
    else:
        结果3
    ############################################
    print(a and b) #and:一假则假,所以a为假或者0,则输出a,否则输出b
    print(a or b) #or 一真则真,如果a不是0或者false,则a为真,输出a,否则,输出b

     

    展开全文
  • 参考:http://blog.csdn.net/speedme/article/details/22916181 1.&&的判断特性 #include <stdio.h> int sumf(int i) ...#if 0 i && (sum = i+ sumf(i-1)); #el...

    参考:http://blog.csdn.net/speedme/article/details/22916181

    1.&&的判断特性

    #include <stdio.h>
    
    int sumf(int i)
    {
        int sum = 0;
    #if 0
        i && (sum = i+ sumf(i-1));
    #else
        if(i!=0){
            sum = i+ sumf(i-1);
        }
    #endif
        return sum;    
    }
    
    int main()
    {
        printf("sum(%d)=%d\n",4,sumf(4));
        printf("aaaaaaaaaaaa\n");
    }

     

    用gcc编译,看起来if判断语句效率还高一点。

    sumf:// if(i!=0){ sum = i+ sumf(i-1);    }
    pushl
    %ebp movl %esp, %ebp subl $40, %esp movl $0, -12(%ebp) cmpl $0, 8(%ebp) je .L2 movl 8(%ebp), %eax subl $1, %eax movl %eax, (%esp) call sumf addl 8(%ebp), %eax movl %eax, -12(%ebp) .L2: movl -12(%ebp), %eax leave ret
    sumf://i && (sum = i+ sumf(i-1));
        pushl    %ebp
        movl    %esp, %ebp
        subl    $40, %esp
        movl    $0, -12(%ebp)
        cmpl    $0, 8(%ebp)
        je    .L3
        movl    8(%ebp), %eax
        subl    $1, %eax
        movl    %eax, (%esp)
        call    sumf
        addl    8(%ebp), %eax
        movl    %eax, -12(%ebp)
        cmpl    $0, -12(%ebp)
    .L3:
        movl    -12(%ebp), %eax
        leave
        ret

     

     

    2.另类的迭代法:::::(!的判断特性这个比较实用一点)

    #include <stdio.h>
    typedef unsigned int (*fun)(unsigned int);
    
    unsigned int Solution3_Teminator(unsigned int n)
    {
        return 0;
    }
    
    unsigned int Sum_Solution3(unsigned int n)
    {
        static fun f[2] = {Solution3_Teminator, Sum_Solution3};
        return n + f[!!n](n - 1); //注意此处
    }
    
    int sumf(int i)
    {
        int sum = 0;
    #if 0
        i && (sum = i+ sumf(i-1));
    #else
        if(i!=0){
            sum = i+ sumf(i-1);
        }
    #endif
        return sum;    
    }
    
    int main()
    {
        printf("Sum_Solution3(%d)=%d\n",4,Sum_Solution3(4));    
        printf("sum(%d)=%d\n",4,sumf(4));
        printf("aaaaaaaaaaaa\n");
    }

     

    转载于:https://www.cnblogs.com/mylinux/p/3978690.html

    展开全文
  • 如果1个switch有多个case,或是有多个if-else语句,不利于程序的阅读和扩展。改进方法可以使用函数指针数组。

    作者:曾Jerry 或 大橙员, 250359225@qq.com

    如果1个switch有多个case,或是有多个if-else语句,不利于程序的阅读和扩展。改进方法可以使用函数指针数组, 有人也叫表驱动法。

    switch

    我们先来看看1个switch的例程:

    typedef enum {
        E_IDLE = 0,
        E_SYNC,
        E_DETECT_FAULT,
        E_FEEDBACK_FAULT
    } Enum_State;
    
    static Enum_State eState = E_IDLE;
    
    static void APP_Idle(void); /* 省略了函数具体实现的功能 */
    static void APP_Sync(void);
    static void APP_DetectLedFault(void);
    static void APP_FeedbackFault(void);
    
    void main(void)
    {
    	for(;;)
    	{
        	switch(eState)
        	{
             case E_IDLE:
            {
                APP_Idle(); 
                break;
            }
            case E_SYNC:
            {
                APP_Sync();
                break;
            }
            case E_DETECT_FAULT:
            {
                APP_DetectLedFault(); 
                break;
            }
            case E_FEEDBACK_FAULT:
            {
                APP_FeedbackFault(); 
                break;
            }
            default: /* E_IDLE */
            {
                break;
            }        
        }
    }
    

    代码长长的,不好看呢。要是要增加一个新的状态,还得进到这个长长中的代码添加相应的状态程序。

    函数指针数组

    我们直接上代码:

    typedef enum {
        E_IDLE = 0,
        E_SYNC,
        E_DETECT_FAULT,
        E_FEEDBACK_FAULT
    } Enum_State;
    
    static Enum_State eState = E_IDLE;
    
    static void APP_Idle(void); /* 省略了函数具体实现的功能 */
    static void APP_Sync(void);
    static void APP_DetectLedFault(void);
    static void APP_FeedbackFault(void);
    void (*APP_Operation[])(void) = { /* Sequence must be consistent with EnumState */
    	APP_Idle,
        APP_Sync,
        APP_DetectLedFault,
        APP_FeedbackFault
    };
    
    void main(void)
    {
    	for(;;)
    	{
    		  APP_Operation[eState]();
    	}
    }
    

    看了代码,是不是觉得使用函数指针数组简洁了许多呢~~ 如果添加新的状态,直接在函数指针数组APP_Operation[]添加即可,不用修改main()函数。

    一般来说,我们常用数组来存储数据的,如 int a[4] = {1, 2, 3, 4} , 则a[0] ~ a[3] 分别存入了整型数据 1, 2, 3, 4。这里解释一下void (*APP_Operation[])(void) = { APP_Idle, APP_Sync, APP_DetectLedFault, APP_FeedbackFault };。函数指针数组,顾名思义,就是这个数组的元素存放的是函数指针(也就是函数名称),因此:

    • APP_Operation[0]表示的是函数APP_Idle, APP_Operation[0]()相当就是调用了函数APP_Idle()
    • APP_Operation[1]表示的是函数APP_Sync, APP_Operation[1]()相当就是调用了函数APP_Sync()
    • APP_Operation[2]表示的是函数APP_DetectLedFault, APP_Operation[2]()相当就是调用了函数APP_DetectLedFault()
    • APP_Operation[3]表示的是函数APP_FeedbackFault,APP_Operation[3]()相当就是调用了函数APP_FeedbackFault()

    注:其中前面的 void 表示函数的返回值, (void) 表示这些函数的参数类型

    小结

    • 如果有大量的switch-case或if-else的情形,请考虑一下函数指针数组,具有解耦效果
    • 使用函数指针数组时,要特别注意函数的顺序和数组越界问题
      在这里插入图片描述
    展开全文
  • 一、switch语句的格式如下: 说明: (1)如果传入的参数是2,则从 case 2 分支开始执行,先是打印相应的信息,然后遇到 break 语句,它的作用是跳出整个 switch 语句块。 (2)C语言规定各 case 分支的常量表达式...
  • 当你需要统计一些不同类型的数量时,你或许第一时间想到的是ifelse或者switch语句,那么实际应该是这个样子的。 手机状态枚举类: package hyy.element; public enum PhoneTypeEnum { SHUTDOWN("关...
  • ylbtech-Arithmetic:Console-算法[if,Function]-一用递归的方式代替循环语句 1.A,Demo(案例) 用递归的方式代替循环语句 1.B,Solution(解决方案) 1.B.1,方式一 using System; namespace ConsoleApplication1 {...
  • JS优化if语句

    2021-05-10 16:54:00
    # JS优化if语句的方式总结 在之前的作业中,为了完成一些功能在函数中...的方式可以有效取代if语句,三元运算符的嵌套也可以代替if...else语句的嵌套,虽然个人觉得三元表达式的嵌套相比于if的嵌套在可读性上并没有太
  • 结合 if x in [“a”, “b”, “c”]:语句,使用字典表达式达到 x == “a”, x == “b”, x == “c” 情况下分支语句的实现的目的。 下面的例子更直观一些吧: def fun(x): if x == "a": return 1 if x == ...
  • 减少if语句

    2016-06-19 02:58:16
    if语句的缺点:出现if语句的代码会越改越糟,变得越来越难维护。 如何减少if语句 1.函数参数中有bool变量 实际上是将两个不同的功能绑定到了一个函数中,解决方法是用两个函数代替一个函数。 1) void foo(int arg0...
  • 概述 一个简单的案例,探究一下java多态的运用 demo public static Parse createParser(String configFormat) throws Exception { Parse parser = null; if ("json".equalsIgnoreCase... }else if ("xml".equalsIg
  • c++代替goto语句的方法

    2019-05-07 17:49:10
    c++代替goto语句 C++代码有时可以采用goto语句但运行风险很高,goto语句可以用函数嵌套调用来代替 type fuc() { fucstart: code; while() () { while() { //if() //goto fucstart; //函数嵌套 fuc(); } } } ...
  • 用数组代替if-else和switch-case语句

    万次阅读 多人点赞 2014-01-24 22:10:11
    表驱动法(Table-Driven Approach),通过在表中查找信息,来代替很多复杂的if-else或者switch-case逻辑判断。这是一种设计的技巧,可以应用很多的场合,不仅可以提高程序的性能,也能大大减少代码量,使得代码变得...
  • 使用表驱动法代替繁琐的if-else语句和case语句 在这里先定义一个枚举类型Week: public enum Week 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几...
  • switch代替if与 instanceof 结合的使用(switch的case语句判断Class类型) switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch 支持字符串 String 类型了,同时 case 标签...
  • 因此在GPU编程中,if else ,switch case和嵌套if语句等等是不推荐的会影响GPU的工作效率。相应的,可以用step()等函数进行替换,用阶梯函数的思维来构建条件语句。这样,所有的线程都执行完全一样的代码,加大了...
  • python if语句

    2018-08-01 14:24:04
    if 条件==条件: #操作 print() else: #操作 print() 和其他编程语言的区别可能就是没有花括号用的一般为:冒号进行代替 其他语言为&amp;&amp; python中为 and 关键字 其他语言为 || python中为 or ...
  • Python while和if语句

    2020-07-22 21:54:00
    python知识点 选择结构 关系运算符与逻辑运算符 布尔类型 概念:布尔类型表示仅含有True或False两个值的 类型,用于代替日常生活的是或否,真或假仅有两个 值的场景。...if语句 if 语句语法形式 i
  • Python中的条件语句与我之前学过的C,C++很相像,在Python里用 and 代替了&&...在使用Python的if语句时,要注意冒号和缩进。最简单的if语句为 if 条件测试: 要执行的内容 如: a=5 if...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,170
精华内容 468
关键字:

代替if语句