c语言入门 -数据类型,常量,变量,操作符

目录

一、第一个c程序

二、数据类型

三、常量,变量

四、转义字符

五、运算符


一、第一个c程序

#include<stdio.h>                                     

//预处理指令 ,此为标准输入输出头文件
int main()                                               

  //主函数,一个程序有且只有一个 程序进入的入口
{
    printf("Hello World");                        

   // printf() 格式输出函数

  return 0;                                               

  // 函数的返回值
}

结果:屏幕上打印出  Hello World

二、数据类型

c语言中的数据类型可以分为几类:

1、基本数据类型  :整形(整数),字符型,浮点型(小数)

2、构造数据类型:枚举类型,数组类型,结构体类型,共用体类型

3、指针类型:

4、空类型

        数据类型说明字节
int整型4
char字符型1
float单精度浮点型4
double双精度浮点型8
   常用整型   说明 字节
short(int)短整型2
long(int)长整型4
long long长长整型8

注:int, short , long 是根据编译环境的不同,所取范围不同

  c语言没有字符串类型,但是有字符串    (√)

三、常量,变量

1、常量:保持不变的量,如身份证号码等

2、变量:int num=90;   char ch='w';

3、全局变量和局部变量

全局变量:代码块即{}外部定义

局部变量:代码块之内定义

 判断:局部变量都在main()之内(X)

全局变量和局部变量同名的时候,局部变量优先于全局变量

#include<stdio.h>
int a = 100;                                       //全局变量                                                        
int main()                
{
    int a = 10;                                    // 局部变量
    printf("%d", a);
    return 0;
}

运行结果为10

4、变量生命周期及作用域

   局部变量的作用域:局部变量所在的局部范围

   全局变量的作用域:整个程序

   局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。

   全局变量的生命周期是:整个程序的生命周期。

5、常量

    分为直接常量(字面量)和字符常量

 直接常量:直接拿来使用,不需要说明的量

  1. 整形常量:13 、7

  2. 实型常量:3.34  

  3.字符常量:'q'  'M'

  4.字符串常量: " I Love China"

const修饰的常变量

#include<stdio.h>
int main()
{
	int a = 10;
	//const int a = 10;
	a = 20;
	printf("%d", a);
	return 0;
}

屏幕打印20   a被const修饰为常量,a=20 报错

#define定义的标识符常量

#define LINE 20
#include<stdio.h>
int main()
{
      //LINE = 30;                      LINE 是被定义的符号常量,不可以更改
    printf("%d", LINE);
    return 0;
}

枚举常量

#include<stdio.h>
enum Snake                                       // 枚举类型
{
    LENGTH,
    SPEED,
    GRADE,
};
int main()
{
    enum Snake s =LENGTH;
    printf("%d ", LENGTH);
    printf("%d ",SPEED);
    return 0;
}

结果:打印0 1

四、转义字符

strlen()   // 求字符串长度函数,'\0'之前的长度

#include<string.h>         // strlen() 引得头文件
#include<stdio.h>
int main()
{
    char arr[] = "abc";
    char brr[] = { 'a','b','c' };  
 // 改为char brr[]={'a','b','c','\0'} ;          结果为3
    printf("%d\n",strlen(arr));                 
    printf("%d",strlen(brr));

printf("%d", sizeof(arr) / sizeof(arr[0]));
    return 0;
}

 结果: 3  随机值    4             

 "abc" 的实际储存 :'a', 'b' , 'c', '\0'   \0'为字符串的结束标志

  brr的实际储存 :{'a','b','c',......之后是随机的一串,}在随机中遇到了'\0' ,停止

  sizeof()注重实际内存,长度包括'\0'

五、运算符

算数运算符: +   -    /   %  ++   --

除法运算符 /   : 

  2/1=2   2/1.0=2.000000   8/3=2    9.0/2=4.500000

 取余运算符% :两个整数 10%3=1       

  正负号取决于被模数的符号     (-10)%3=-1       10%(-3)=1

    %% 即为一个%

自增自减运算符

++a    --a        先加减,后取值

a++    a--        先运算,后取值

#include<stdio.h>
int main()
{
	int a = 1;
	printf("%d", a++);
	return 0;
}

结果为1 先取a的值,后运算 printf 打印1,执行完了a=2

#include<stdio.h>
int main()
{
	int a = 1;
	int b = a++;
	printf("%d", b);
	return 0;
}

结果为1   b=a,a=a++          此时b=1


#include<stdio.h>
int main()
{
	int a = 1;
	a++;
	printf("%d", a);
	return 0;
}

结果为2 a++执行之后 a=2

#include<stdio.h>
int main()
{
	int a = 1;
	int b = ++a;
	printf("%d", a);
	return 0;
}

结果 2  b=++a      a++ ,b=a

赋值运算符

=       +=    -=     *=        /= 

int a=8;    a-=5     

即为a=a-5;a=3

 关系运算符  >  >=  < <=  ==    !=

关系运算符的结果为 0 1      0表示假,非0表示真

逻辑运算符        &&       ||     !

与运算&&  : 两个都为真即为真           

判断式1为假,则式2不实行  结果为0

或运算 ||   : 只要有一个为真则为真   

判断式1真,式2不执行,结果为1

非运算 !  : (!真 )为假  ,(!假 ) 为真

三目运算符     (表达式1)?(表达式2):(表达式3)

表达式1为真,执行表达式2,反之,执行表达式3

#include<stdio.h>
int main()
{
    int a = 8, b = 4;
    int max = (a < b) ? b : a;                           
    printf("%d", max);
    return 0;
}

功能:找到两个数字中的最大值

位操作符      ^        &      |

按位与 & : 同时为1才为1

按位或 | :  有一个1则为1

按位异或 ^ : 两个相同为0  两个不同为1

反码: 原码最高位不变,其他位按位取反

补码:反码+1

正数三者相等   计算机储存的是补码

60 & 13

60补码 :00000000 00000000 00000000 00111100

13 补码: 00000000 00000000 00000000 00001101

60&13  : 00000000 00000000 00000000 00001100 12   

60|13                   

60补码: 00000000 00000000 00000000 00111100

13补码: 00000000 00000000 00000000 00001101

60|13  00000000 00000000 00000000 00111101  61   

60^13   0000 0000 0000 0000 0000 0000 0011 0001  49

移位操作符   <<       >>

左移:左边抛弃,右边补0

右移:右边抛弃,左边补符号位   --------算数右移

右边抛弃,左边补0            --------逻辑右移

-2  <<1

-2的原码:10000000 00000000 00000000 00000010  

-2补码:11111111 11111111 11111111 11111110  

 -2<<1 补码:11111111   11111111  11111111 11111100  

 -2<<1原码:10000000 00000000  00000000 00000100  -4

-1>>1 

-1补码:11111111 11111111 11111111 11111111 

-1>>1补码:11111111 11111111 11111111 11111111 ----算数右移

-1>>1原码:1000 0000 0000 0000 0000 0000 0000 0001  -1

按位取反 ~         取地址 &           解引用 *

 按位取反的值 -(a+1)

-2 原码 :        10000000 00000000 00000000 00000010

补码:     11111111 11111111  11111111  11111110

~(-2) :00000000 00000000 00000000 00000001      1             

                         

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值