Day 4 初识C语言 12.15

Day 4 初识C语言 12.15,第1张

Day 4 初识C语言 12.15

对本星期二的课笔记进行一个总结。

 目录

三目运算符(也叫条件 *** 作符)

逗号表达式

补充:

单目 *** 作符

关系 *** 作符和逻辑 *** 作符

 真与假

关键字(不能自己创建)

typedef关键字:

register寄存器关键字:

static关键字(修饰变量与函数)

sum运算

宏的定义

复合表达式

!=EOF

!感叹号还可以用来翻转一个等式的真假。

三目运算符(也叫条件 *** 作符)

格式为

exp1?exp2:exp3

#include
int main()
{
    int a,b,c;
    scanf("%d %d %d"),&a,&b,&c);
    printf("%d",(a>b?a:b)>c?(a>b?a:b):c);
    return 0;
}

其中a>b?a:b表示a与b比较大小,若a>b则整段输出a到a。否则输出b到b。

后面即为a>c?a:c,即a与c比大小,输出较大的那个到%d中。

逗号表达式
int a =3;
int b =20;
int c =0;
int d =(a-=3,b+=a,c=a-b,b=a-4);
//int d =后面括号内的就是逗号表达式。
//a-=3得出a=0,b+=a也就是20加0还是10,c后面就成了-20,b得出-4。
//因此d的值为-4。
补充:
int arr[10] = {0};
arr [5] = 9;
//其中[]为下标引用 *** 作符, *** 作数为数组名和下标。

int m = get max (3,5);
//其中()为函数调用 *** 作符, *** 作数为函数名和3,5。
单目 *** 作符
!
-
+
sizeof (为 *** 作符中的运算符,并不是函数。)
~
++
--
强制类型转换

其中强制类型转换的格式为:

int main()
{
    int a = 3.14;  //这里改成int a = (int) 3.14;就可以把3.14强制转换为int类型。
    printf("%d",a);

    return 0;
}

其中++和--有以下概念:
 

int a = 10;
int b = ++a;
int a = 10;
int b = a++;

//++a为前置++,先++后使用,打印出来a,b都为11。
//a++为后置++,先使用后++,打印出来a=11,b=10。
关系 *** 作符和逻辑 *** 作符
//关系 *** 作符:
>
>=
<
<+
!=
==
//逻辑操作符:
&&
||
int a = 3;
int b = 4'
if(a=3)&&(b=4)//两者都要为真才使用if。

if(a=3)||(b=4)//两者一个为真即可使用if。
 真与假

C语言中有真与假。0代表假,1代表真。等式也存在真假。

#include
int main()
{
    int a=5,b=3,c=8;
    int d=(a>b),e=(b>c);     //a>b表达式为真,b>c表达式为假
          printf("%d %d",d,e);  //那么程序的运行结果是什么呢
    return 0;
}

打印出来d值为1,e值为0。

int a = 0;
if(a==5)   //if判断值时必须用等号,一个等号判断真假,两个才是判断相等与否。
{
    printf("hehen");

}

注意:当if(a=0)的时候,此时a=0这一赋值表达式为假(非零即真),就不会执行后续的else语句。

若if(a=1)的时候,就可以执行后续else语句。

关键字(不能自己创建) typedef关键字:
unsignned int num = 10;
typedef unsignned int uint
unit num2 = 10;

//现在第一句和第三句的意思完全一致了,typefed相当于把unsigned int起了一个别名。
register寄存器关键字:

 register 关键字的采用范围:
1. 位于局部的,
2. 不会被写入的,
3. 读取频繁的,
4. 不会大规模使用的。

register修饰的变量,不能取地址(因为已经放在寄存区中)。

#include 
#include  
int main() 
{ 
	register int a = 0; 
	printf("&a = %pn", &a);
	//编译器报错:错误 1 error C2103: 寄存器变量上的“&” 
	//注意,这里不是所有的编译器都报错,目前我们的vs2013是报错的。  
	system("pause"); 
	return 0; 
}
int num = 10;           //4个字节。
register int num2 = 20;  //建议将20放在寄存器中。

 register关键字把数据存储到寄存器中来获取更快的计算速度。

static关键字(修饰变量与函数)

可以修饰全局变量,局部变量,函数。

void test ()
{
    int a = 5;
    a++
    printf("%d",a);
}
int main()
{
    int i = 0;
    while(i<10)
    {    test();
         i++;

    }

    return 0;
}
//此时输出的为6,6,6,6,6,6,6,6,6,6
//但是如果变成了static int a =5;
//你们就可以打印成6,7,8,9,10,11,12,13,14,15

因为static修饰的局部储存在静态区了。

内存有栈区,堆区和静态区。原本的a = 5存放于栈区。但是static修饰变量实际上是改变了变量的储存位置,把它放到了静态区,导致变量出了作用于仍在,生命周期没有结束。

静态区一般储存的静态变量和全局变量。栈区都是存放的局部变量和函数的参数。堆区是用于动态内存开辟的。

sum运算

格式为如下:

#include

int sum(int x,int y,int z)
{
    int c;
    c = x+y+z;
    return c;
}                   //函数声明。


int main()
{
    int a;
    int b;
    int c;
    
    scanf("%d" "%d" "%d",&a,&b,&c);  //scanf输入小数时把int改为float,scanf的%d改为%f,
    printf("%d",sum(a,b,c));         //printf的%d改为%.2f就可以。
   
    return 0;
}

或者,a,b,c有具体值时。

int main()
{
    int a = 10;
    int b = 20;
    int c = 30;
    int sum = 0; //初始化。

    printf("%d",sum);
    
    return 0;
}
宏的定义
#include
int Max(int x, int y)
{
    if(x>y)
        return x;
    else
        return y;
}

#define Max(x,y) (x>y?x:y)
int main()
{
    int a = 10;
    int b = 20;
    int max = Max(a,b);
    printf("max=%dn",Max);

    return 0;
}

先抄写一遍,只是遇到了这么个解法,并没有深入了解。

复合表达式
#include
int main()
{
    if(4<2<3)    
        printf("ha");
    if(4>2>3)  
        printf("ha");
    if(4<3>2)   
        printf("ha");

    return 0;
}

首先第一个4<2为假,输出0。0<3为真,输出1。

同理可得第二个第三个输出0。

其中<和>的结合性为从左到右,即从左往右计算。=的结合性为从右到左,但是=的优先级要低于<>。

#include
int main() 
{
	int a, b;
	    if (a = b = 4)      
		    printf("%d %d ",a,b);
	    if (a = 5 > 3)    
		    printf("%d", a);
	return 0;
}

第一个printf输出为4,4。而第二个printf输出为1。因为5>3等式的值为真也就是1。

!=EOF
#include
int main()
{
    int a=0;
    while(scanf("%d",&a)!=EOF);//可以进行多行输入。
    if(a>=140)
    {
        printf("Geniusn");
    }
    return 0;
}

//因为scanf函数在读取失败后回返回到EOF,因此需要写上!=EOF来排除。
//EOF全称为end of file,是文件的结束标志。
!感叹号还可以用来翻转一个等式的真假。
int x = 5;
!x即为假。
int y = 0;
!y即为真。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5670160.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存