学习C的好日子

$s-1.1 数据类型

我们可以利用c的库函数给的方式将INT CHAR LONG SHORT (整形)的最大 最小的范围

(一定不能在开辟空间的时候,不能超越,容易出问题)

#include <stdio.h>
#include <limits.h>

int main()
{

   printf("The number of bits in a byte %d\n", CHAR_BIT);//8
   printf("The minimum value of SIGNED CHAR = %d\n", SCHAR_MIN);//-128
   printf("The maximum value of SIGNED CHAR = %d\n", SCHAR_MAX);//127
   printf("The maximum value of UNSIGNED CHAR = %d\n", UCHAR_MAX);//255

   printf("The minimum value of SHORT INT = %d\n", SHRT_MIN);//-32768
   printf("The maximum value of SHORT INT = %d\n", SHRT_MAX);//32767

   printf("The minimum value of INT = %d\n", INT_MIN);//-2147483648
   printf("The maximum value of INT = %d\n", INT_MAX);//2147483647

   printf("The minimum value of CHAR = %d\n", CHAR_MIN);//-128
   printf("The maximum value of CHAR = %d\n", CHAR_MAX);//127

   printf("The minimum value of LONG = %ld\n", LONG_MIN);//-2147483648
   printf("The maximum value of LONG = %ld\n", LONG_MAX);//2147483647
 
   return 0;
}

利用大写就可以得出其他

浮点数需要利用《float.h》库函数

#include <stdio.h>
#include<float.h>

int main()
{

 float fMax = FLT_MAX;   //单精度浮点型最大值
 float fMin = FLT_MIN;   //单精度浮点型最小值
 printf("float max:%f\n", fMax);  //3.402823466e+38F
 printf("float min:%f\n", fMin);  //1.175494351e-38F 
    
   return 0;
}

$s-1.2(常and变)量的使用

1.2.1-使用

    • C常1:常量是固定值,在程序执行期间不会改变。这些固定的值,又叫做字面量

整数常量、浮点常量、字符常量,或字符串字面值,也有枚举常量)

**0x 或 0X 表示十六进制,0 表示八进制,不带前缀则默认表示十进制。

********************我是分隔符*********************

    • C常2:字符常量【用char修饰它】(ascll)

大小and其他写 [‘A’、‘c’、‘@’、‘9’、‘#']

********************我是分隔符*********************

    • C常3 转义字符

[换行符(\n)或制表符(\t)]

********************我是分隔符*********************

    • C常4 字符串常量

括在双引号 "" 中的。一个字符串包含类似于字符常量的字符:普通的字符、转义序列和通用的字符

//我们经常写的(好多语言都写的)
//你好!世界。
#include <stdio.h>//预处理器指令
int main()//函数
{
     /*入门print*/   //注释
   printf("Hello, World! \n");      //语句表达式
   return 0;//当我们学习 函数 这个章节就会明白  return一下的含义了
}

********************我是分隔符*********************

    • C常5 #define修饰

#define LENGTH 10 #define WIDTH 5

//替换语句 #define MAX(x,y) ((x)>(y)?(x):(y))

********************我是分隔符*********************

    • C常6const 修饰

const int LENGTH = 10; const int WIDTH = 5;

这个在不能随意的更改数据 在该语句下尽量不该

但是我们可以通过 指针更改

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

const char arr[10]="hello";

1.2.2-变量的命名规则

变量名只能包含字母、数字和下划线,数字开头的名字,不能做变量名

(常用骆驼命名法)

可参考变量命名规则_百度百科 (baidu.com)

$s-1.3 变量

程序可操作的存储区的名称

变量名不能和编译器给定的关键字所重复 否则编译器分不清哪个是数据类型那个是变量名

    • 1.3.1-sizeof

我们可以用sizeof来得知该类型占据的字节大小(sizeof是一个运算符,可以求取参数变量/类型占的空间大小)

# include <stdio.h>
int main()
{
    printf("sizeof(char): %d\n", sizeof(char));//1
    printf("sizeof(short): %d\n", sizeof(short));//2
    printf("sizeof(int): %d\n", sizeof(int));//4
    printf("sizeof(long): %d\n", sizeof(long));//4/8
    printf("sizeof(long long): %d\n", sizeof(long long));//8
    printf("sizeof(float): %d\n", sizeof(float));//4
    printf("sizeof(double): %d\n", sizeof(double));//8
    return 0;
}

而指针型的在32为下占据4字节 64为电脑下8位

printf("sizeof(char*): %d\n", sizeof(char*));
printf("sizeof(short*): %d\n", sizeof(short*));
printf("sizeof(int*): %d\n", sizeof(int*));
printf("sizeof(long*):  %d\n", sizeof(long*));
printf("sizeof(long long*): %d\n", sizeof(long long*));
printf("sizeof(float*): %d\n", sizeof(float*));
printf("sizeof(double*): %d\n", sizeof(double*));
    • 1.3.2-我们此时要与库函数<string.h>里的strlen有所区别

计算字符串,数组中会自动增加一个元素’\0’,所以sizeof计算的结果会统计‘\0’,而strlen是计算字符串长度的,遇到’\0’结束,但是不把’\0’包含在内

  • 强制类型转换

  int aa= 8,bb = 5;
   double mean;
 
   mean = (double) aa / bb;
   printf("Value of mean : %f\n", mean );
   int  i = 17;
   char c = 'c'; /* ascii 值是 99 */
   int sum;
 
   sum = i + c;
   printf("Value of sum : %d\n", sum );
//在这里,c 首先被转换为整数,但是由于最后的值是 float 型的,所以会应用常用的算术转换,编译器会把 i 和 c 转换为浮点型,并把它们相加得到一个浮点数。

变量的强制类型转换 方式 a=(float)(变量名)

    • 1.3.3-static与auto(关键字)

1.。static (静态变量)使得变量不销毁 生命周期延长是整个程序的执行期

2.。与auto形成对比 auto是用完就销毁(auto存储类是所有局部变量默认的存储类)

#include <stdio.h>

int n = 10;  //全局变量

void ff1(){
    int n = 15;  //局部变量
    printf("ff1 n: %d\n", n);

int main(){
    int n = 30;  //局部变量
    ff1();
    {
        int n = 40;  //局部变量
        printf(" n: %d\n", n);
    }
    printf("main n: %d\n", n);

    return 0;
}

    • 1.3.5-作用域和生命周期

1.3.5.1-局部变量

##某个函数或块的内部声明的变量称为局部变量##

优先使用局部变量

#include <stdio.h>
 
int main ()
{
  /* 局部变量声明 */
  int a, b;
  int c;

  /* 实际初始化 */
  a = 1;
  b = 2;
  c = a + b;
 
  printf ("value of a = %d, b = %d and c = %d\n", a, b, c);
 
  return 0;
}
1.3.5.2-全局变量

定义在函数外部,通常是在程序的顶部

全局变量在声明后整个程序中都是可用的。下面是使用全局变量和局部变量的实例

#include <stdio.h>
 
/* 全局变量声明 */
int g;
 
int main ()
{
  /* 局部变量声明 */
  int a, b;
 
  /* 实际初始化 */
  a = 1;
  b = 2;
  g = a + b;
 
  printf ("value of a = %d, b = %d and g = %d\n", a, b, g);
 
  return 0;
}

局部变量和全局变量的名称可以相同,但是在函数内,如果两个名字相同,会使用局部变量值,全局变量不会被使用。

1.3.5.3-优先使用局部变量
#include <stdio.h>
 
/* 全局变量声明 */
int g = 20;
 
int main ()
{
  /* 局部变量声明 */
  int g = 10;
 
  printf ("value of g = %d\n",  g);/
 
  return 0;
}
value  g=10

来一次 对比

int main()
{
    int i = 0;//这是代码块外部-i全局变量
    for(i=0;i<10;i++)
    {//代码块开始
        int j=0;//这是代码块内部-j局部变量
        for(j=0;j<10;j++)
    }//代码块结束
}
1.3.5.4-生命周期

变量的生命周期就是从创建该变量开始到该变量被销毁的这一段时间

C语言变量及其生命周期 - CodeMaker+ - 博客园 (cnblogs.com)

出了程序就销毁

而我们一般的都在数据类型前有auto (这个省略写了)

static是静态变量(执行完不会销毁,直至代码结束)

#include <stdio.h>
void test1()
{
    static int m = 1;
   int x=1;
    m = m + 1;
    printf("%d ", m);
    printf("%d",x);
}
void test2()
{
   int x=1;
 
   
    printf("%d",x);
}

int main()
{
    int n = 6
    while (n < 5)
    {
        test1();
        test2();
        n++;
    }
}

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你会魔法吗✧(≖ ◡ ≖✿)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值