我是靠谱客的博主 孤独黑猫,最近开发中收集的这篇文章主要介绍C语言中的小知识1~20,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  1. 打印字符       
    char ch=‘A';
    printf("%cn",ch);
  2. %d: 打印整形上的十进制数据

  3. %p: 以地址的形式打印

  4. %X: 打印16进制数字

  5. 打印双精度浮点数

    double d=3.14;
    printf("%lfn,d);//注意:lf
  6. 计算机中的单位:bit--比特位;byte--字节;kb; mb--兆b; gb; tb; pb.
    一个字节8个比特位      1kb=1024byte      1mb=1024kb...
     

    //32位机器
    printf("%dn",sizeof(char));//1
    printf("%dn",sizeof(short));//2
    printf("%dn",sizeof(int));//4
    printf("%dn",sizeof(long));//4
    printf("%dn",sizeof(long long));//8
    printf("%dn",sizeof(float));//4
    printf("%dn",sizeof(double));//8
    

  7. short age=20; //含义:向内存申请2个字节用来存放20

  8. 变量:
    全局变量:定义在代码块{....}之外的变量,在哪都可见
    局部变量:定义在代码块{....}之内的变量,只能在自己所在{...}中可见
    注:
        当局部变量和全局变量同名时,局部变量优先;
        局部变量和全局变量建议名字不要相同,容易产生误会--bug。
        C语言规定:变量要定义在当前代码块的最前面;
        定义的变量仅可在自己的代码块内使用,当然也包括自己所在代码块中的嵌套的代码块,如

    {
        int a=10;
        {
            ...//这里面也可使用变量a
        }
        ...//可使用变量a
    }

  9. 交换两个整形变量,但不能引入第三个变量

    //1.这种算法会出现溢出情况(不建议)
    int a=3;
    int b=5;
    a=a+b;//8
    b=a-b;//3
    a=a-b;//5
    
    //2.按二进制位异或(完美算法)
    int a=3;//011
    int b=5;//101
    a=a^b;//110
    b=a^b;//011  ->3
    a=a^b;//101  ->5

  10. 找出只出现一次的数
    题面:给定一个非空数组,除了某个元素只出现一次以外,其余每个元素均出现两次,找出             来那个只出现一次的那个元素
    样例:int arr[ ]={1,2,3,4,5,1,2,3,4};该数组中只有5出现了一次,其他均出现两次
     

    //法一:效率慢
    int arr[]={1,2,3,4,5,1,2,3,4};
    int i=0;
    int sz=sizeof(arr)/sizeof(arr[0]);
    for(i=0;i<sz;i++)
    {
        //统计arr[i]在数组里面出现的次数
        int count=0;
        int j=0;
        for(j=0;j<sz;j++)
        {
            if(arr[i]==arr[j];
                count++;
        }
        if(count==1)
        {
            printf("单身狗:%dn,arr[i]);
            break;
        }
    }
    
    
    //法二:巧解,用按位异或。a^a=0;0^a=a
    int i = 0;
    int ret = 0;
    int sz = sizeof(arr) / sizeof(arr[0]);
    for (i = 0; i < sz; i++)
    	ret = ret ^ arr[i];
    printf("%dn", ret);

  11. 写个关机程序
    运行程序,你的电脑在1分钟后关机,如果输入我是猪,就取消关机
     

    #include<stdio.h>
    #include<limits.h>
    #include<string.h>
    int main()
    {
    	char input[20] = { 0 };
    	system("shutdown -s -t 60");
    again:
    	printf("请注意你的电脑将在一分钟内关机,如果输入:我是猪,就取消关机n");
    	scanf("%s", input);
    	if (strcmp(input, "我是猪") == 0)
    		system("shutdown -a");
    	else
    		goto again;
    }

  12. 常量
    字面常量:如常数5,4
    const 修饰的常变量
    #define定义的标识符常量:如#define MAX 10
    枚举常量enum

  13. 字符串

    char arr1[] = "abc";//末尾隐藏一个''
    char arr2[] = { 'a','b','c','' };//等价于char arr2[] = { 'a','b','c',0 };
    
    #include<stdio.h>
    #include<string.h>
    int main()
    {
    	char arr1[] = "abc";
    	char arr2[] = { 'a','b','c' };
    	printf("%dn", strlen(arr1));
    	printf("%dn", strlen(arr2));
    }

    结果:

  14. 转义字符
     \ : 用于表示一个反斜杠,防止它被解释为一个转义序列
    ?:在书写多个问好时使用,防止他们被解释为三字母词
    ':用于表示一个字符常量’,如打印‘,printf("%sn","'");
    ":用于表示字符串内部的双引号,如printf("%sn",""");

    printf("%dn",strlen("C:test32test.c"));//13

    解释:t算一个,32是一个8进制数 ,算一个 

    printf("%cn",'32');//结果:->

         ddd:  ddd表示1~3个八进制的数字
         xdd:   dd表示2个十六进制的数字 

printf("%cn",'x61');//结果:a     

           解释:61->  6*16+1=97,  97ASC码所对应的是a

      15.函数:

                 

  16.数组:一组相同类型的元素组合
      
       

   17.位操作符(左移<<, 右移>>,按位与&,按位或|,按位异或^, 按位取反~)
       注:这里的位都是指二进制位

#include<stdio.h>
#include<string.h>
int main()
{
	int a = 1;//整形1占4个字节-32个比特位  00000000 00000000 00000000 00000001=1
	int b = a << 2;//                      00000000 00000000 00000000 00000100=4
	printf("%dn", b);//结果:4//不管b怎样,a不变
}
#include<stdio.h>
#include<string.h>
int main()
{
	int a = 3;         //011
	int b = 5;         //101
	int c = a & b;     //001
	printf("%dn", c); //结果:1
}

  18.sizeof  和逻辑反操作!

int a=10;
printf("%dn",!a): //0
int a=10;
printf("%dn",sizeof(a));    //结果:4
printf("%dn",sizeof(int));  //结果:4

19.强制类型转换
     语法: 括号里面放类型

int a=(int)3.14; //double被强转成int类型

20.常见关键字
 auto(自动定义):局部变量前都有auto,只不过局部变量斗士自动变量,所以我们把它省略了    如auto int a=10;

 register--- register int a=20;//建议把变量a放入寄存器中

int --定义的整型变量是有符号的,等价于signed int

typedef (类型重定义):typedef   unsigned int   u_int  //u_int 是unsigned int 的别名

                                        unsigned int a=19;<=>u_int a=19;

static

       

       

最后

以上就是孤独黑猫为你收集整理的C语言中的小知识1~20的全部内容,希望文章能够帮你解决C语言中的小知识1~20所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部