经典语句大全
问号表达式篇一:【C语言】if语句和问号表达式if语句是大多数程序语言中常用的一种语句。用于使程序有选择性的执行代码。格式: if(条件){语句1} else{语句2}当条件成立时,执行语句1,否则执行语句2 (如果没有语句2,else可以省略)。下面我们使用if语句写一段程序:输入两个数,输出较大
问号表达式

问号表达式篇一:【C语言】if语句和问号表达式


    if语句是大多数程序语言中常用的一种语句。用于使程序有选择性的执行代码。
    格式: if(条件){语句1} else{语句2}
    当条件成立时,执行语句1,否则执行语句2 (如果没有语句2,else可以省略)。
    下面我们使用if语句写一段程序:输入两个数,输出较大的数。
    首先我们要输入,就应该使用:scanf("%d%d",&a,&b); //注意看这里是如何一次性读取两个数的
    这里输入数据的时候要注意数据用空格隔开,如: 12 15
    然后,以上数据为例,我们将要进行判断,15>12,则输出15比较大。这个时候,a和b分别代表12和15。所以,我们可以写成出下语句: ……
if(a>b)
{
    printf("%d比较大",a);
}
else
{
    printf("%d比较大",b);
}     这样我们就可以完成判断。必须理解上面的语句,我们才能进一步往下深入。
    上面的一段代码是美观的写法,但是会占据程序行数。其中语句部分如果只有1条,可以像for和while一样省略大括号并写在一行之内。上语句可以变为:
if(a>b)printf("%d比较大",a);else printf("%d比较大",b);
    我们再改一下,如果只有一个输出,用另一个变量记住最大值,也是一个可行的方法: int a,b,max;
scanf("%d%d",&a,&b);
if(a>b)max=a;else max=b;
printf("%d比较大",max);
    这样一来,代码就短了很多了。对于大型程序,代码过长是很不好的。所以我们可以从小处缩减我们的代码。正因为如此,我们可以用问号表达式来代替if语句(由于只适合于简单的if,问号表达式用得不多)
if语句和问号表达式的区别
格式:(条件)?(语句1):(语句2)  问号前是条件,条件成立就做语句1,否则做语句2
if语句: if(a>b)max=a;else max=b;
等效问号表达式: (a>b)?(max=a):(max=b);
    这样一对比,大家应该知道问号表达式的实质了吧。不明白要留言啊。
    所以,程序可以写成: #include"stdio.h"main(){    int a,b,max;    printf("请输入两个数,用空格分开:");    scanf("%d%d",&a,&b);    (a>b)?(max=a):(max=b);    printf("%d比较大\n",max);}

问号表达式篇二:正则表达式之贪婪模式与非贪婪模式!


我们学习了正则表达式,发现他有很强大的匹配功能,给我们的工作带来很大的便利。
但是,我们再看看下面的例子
案例一: A1单元格中的内容:一个小说的目录全部复制到里面去了,而我们希望的是A2到A12中这样的格式,看起来清爽。怎么办呢?一个个复制粘贴吗?
当然不用,且看我们强大的正则怎么处理的。
首先,观察A1中的内容,每个目录都是以第字开头,第字后面是数字,有的是一位数字,有的是两位数字,所以用\d 表示,完了是回,后面是空格,空格我们用点号表示,空格的位数不确定,所以后面跟加号,完了就是目录内容。
表达式如下:
pattern="第\d 回. ?[一-龢] "
那为啥中间有个问号(表达式中黑色字体部分)呢?大家可以通过下面的正则表达式测试软件来看看加了问号和没加问号的的区别?
我们发现,"第\d 回. ?",加了问号后,虽然回字后面的元字符点号和量词加号结合在一起,表示任何一个或者多个字符,及表示后面是任意一个或者多个字符都可以,所以不加问号时,回字后面的所有内容都会被匹配,这种匹配方式就叫做贪婪模式,是按照最多的可能去匹配;但是加了问号后,就按满足条件的最少的字符数量去匹配,这就叫做非贪婪模式,也叫懒惰模式。
上例中的代码如下:
Sub 提取()
Dim regx As Object, mat, m, n%
Set regx = CreateObject("vbscript.regexp")
With regx
.Global = True
.Pattern = "第\d 回. ?[一-龢] "
Set mat = .Execute([a1])
For Each m In mat
n = n 1
Cells(n 1, 1) = m
Next
End With
End Sub
另外一个知识点:[一-龢] 表示任意一个汉字,就像 [0-9] 表示0到9中任意一位数字,[a-z] 表示任意一个字母一样。当然这样只是一种简写方式,标准写法是:
[\u4e00-\u9fa5]。

问号表达式篇三:单片机提高C语言代码效率的方法


代码效率包括两个方面内容:代码的大小和代码执行速度。如果代码精简和执行速度快,我们就说这个代码效率高。一般情况下,代码精简了速度也相应提上来了。单片机的ROM和RAM的空间都很有限,当您编程时遇到单片机的ROM和RAM的不够用的时候,或者您的程序要求较高的执行速度时,我们就得面对解决代码效率问题了。如何提高代码效率?现笔者以一个LED闪烁的程序为例与您探讨。
#i nclude<reg52.h>//包含头文件
sbit led=P2^0;//定义位变量led,使其关联单片机管脚P2.0
void Delayms(unsigned int t);//定义延时函数
int main(void)//主函数(C语言程序入口函数)
{
       while(1)
       {
             led=0;//P2.0拉低,点亮LED
             Delayms(500);//调用延时函数,延时500毫秒
             led=1;//P2.0拉高,熄灭LED
             Delayms(500);//调用延时函数,延时500毫秒
       }
       return 0;
}
void Delayms(unsigned int t)//延时函数
{
        unsigned int i,j;
        for(i=0;i<t;i++)
               for(j=0;j<120;j++);//大约延时1毫秒
}
        这是指示灯LED闪烁的C源码,这个源码在Keil uVision4 生成的程序代码是67个字节。下面我们就采用几个方法来提高这个程序的效率。
一.尽量定义局部变量
        单片机程序的全局变量一般是放在通用数据存储器(RAM)中,而局部变量一般是放在特殊功能寄存器当中。处理寄存器数据的速度比处理RAM数据要快,如果在一个局部函数里调用一个全局变量将会多生成好几个代码出来。所以,少定义全局变量,多定义局部变量。如上例中,如果把延时函数里的i和j定义为全局变量,编译后程序代码会增加到79个字节,多了12个字节。
二.省略函数定义
        在一个单片机程序里我们习惯在main函数的前面先定义被调用函数,然后在mian函数的下面再实现被调用函数。这样的写法固然是一个好习惯,但每定义一个函数会增加几个代码,而且函数形参数据类型越大、形参越多增加的代码就越多,显然这不是什么好事。如果不定义编译器又报错,怎么办?C编译器的编译顺序是从上往下编译,只要被调用的函数在主调函数调用之前实现就没有问题了。所以,笔者的习惯写法是不用定义函数,但要按先后顺序(被调用函数一定要在主调函数之前写好)来写函数实现,到最后再写main函数。这样做编译器不但不会报错,而且代码得到精简了。如上例中,把延时函数的定义删除了,然后把延时函数的实现搬到main函数的上面,编译后程序代码减少到63个字节,减少了4个字节。
三.省略函数形参
        函数带形参,是为了在函数调用时传递实参,不但可以避免重复代码出现,还可以通过传递不同的实参值多次调用函数且实现不同的函数功能,总体代码也会得到精简。在实际编程的时候,我们只要注意,还可以进一步精简代码。对于不是多次调用或者多次调用但实参值不变的函数我们可以省略函数形参。如上例中的延时函数,我们把它改成不带形参的函数:
void Delayms()//延时函数
{
     unsigned int i,j;
     for(i=0;i<500;i++)
          for(j=0;j<120;j++);//大约延时1毫秒
}
编译后,程序代码变成了56个字节,精简了11个字节。
四.改换运算符
       也许您可能没有注意到C运算符的运用也会影响程序代码的数量。如上例中,把延时函数里的自加运算符改成自减运算符后,如:
void Delayms(unsigned int t)//延时函数
{
     unsigned int i,j;
     for(i=t;i>0;i--)
          for(j=120;j>0;j--);//大约延时1毫秒
}
编译后,程序代码变成了65个字节,精简了2个字节。
通过改换运算符能达到精简代码的例子还有:
1.把求余运算表达式改为位与运算表达式。如:b=a%8 可以改为:b=a&7。
2.把乘法运算表达式改为左移运算表达式。如:b=a*8 可以改为:b=a<<3。
3.把除法运算表达式改为右移运算表达式。如:b=a/8 可以改为:b=a>>3。
五.选择合适的数据类型
        C语言里选择变量的数据类型很讲究,变量的数据类型过小满足不了程序的要求,变量的数据类型过大会占用太多的RAM资源。您可能还没有注意到数据类型定义也影响程序代码的大小,而且这个影响还不小。如上例中,延时函数里的局部变量j定义的数据类型明显偏大,如果把它由unsigned int改成unsigned char 。编译后,程序代码变成了59个字节,精简了8个字节。
六.直接嵌入代码
        在您的程序里如果某个函数只调用一次,而您又要求代码提高执行速度,建议您不要采用调用函数的形式,而应该将该函数里的代码直接嵌入主调函数里,代码执行效率会大大提高。
七.使用效率高的C语句
        C语言里有一个三目运算符“?”,俗称“问号表达式”。很多程序员都很喜欢使用,因为它逻辑清晰表达简洁。
看这个问号表达式:c=(a>b) ? a+1 : b+1;实际上等效于以下的if…else结构:
if (a>b)  c=a+1;
else  c=b+1;
可以看到,使用问号表达式,语句相当简洁,但它的执行效率却很低,远没有if…else语句效率高。所以,当您的程序要求提高执行速度的话,建议您不要使用问号表达式了。
        另外,do…while语句也比while语句的效率高。
代码的效率问题,不是我们编程中的主要问题,除了程序要求较高的执行速度或者单片机的ROM和RAM不够用的时候才会考虑。一般情况下,我们不用在乎。如果您一味追求高效率的代码,可能会影响代码的可读性和可维护性。

问号表达式

https://m.shanpow.com/mrmy/344253/

推荐访问:php问号表达式
《问号表达式.doc》
将本文的Word文档下载,方便收藏和打印
推荐:
下载文档
下一篇: 心凉的句子
相关阅读经典语句大全 
热点推荐