C语言注意事项

个人学习笔记,若有错误请指正

 

1.没有定义的小数,默认为 double,不可取余“%”sqrt()返回值也为double类型,不可%。1.5f为float 。正整数为 int。浮点数可以省略前面的整数,保留小数

2.标识符 首字符必须为 “字母”“ 下划线”包括:数字,字母,下划线。不可出现符号。

3.long int ,short int 可以省略 int ,写成  long(4字节)  ,short (2字节)

4.整型常量后面加 U/u  -unsigned int  加L/l -long int  264U  12L,也可以一起写,“0UL—无符号长整型 0

5. 科学计数法 3.14*100=3.14e2 , 3.14*0.0001=3.14e-4 其中e后面只能为“整数”。E前后必须有数字

6.不允许使用关键字作为标识符的名字,其他的都可以被定义。例如: scanf,main,strcpy.sqrt;甚至可以定义相同的名字,一个为变量名,一个为函数名。定义函数名的时候,如果.h文件中有定义像scanf,main,strcpy.sqrt等,再次被自己定义的时候定义类型必须一致。可能会将原函数覆盖。

7(a++)++或者 (++a)++错的!首先(a++)执行完之后返回是一个临时变量具有const属性(右值),无法修改。而++ 操作的变量必须是一个可以修改的左值

8. 强制转换,将取值小的类型转为取值大的类型是安全的。浮点数转为整数,会丢失小数部分。

9.scanf回车干扰问题

  1.—>  scanf("%d", &a);   scanf("%c",&b);

  2.—>  scanf("%d", &a);   scanf("%d",&c);

  1. 输入 %d 之后,输入流中有 回车符,%c吸收了回车,输入的字符无效
  2. %c 会吸收 回车,%d不吸收 ,回车本身就是字符。
   int data1,data2;        char op;

scanf("%d", &data1);    printf("data1=%d\n", data1);

    //getchar();

scanf("%c",&op);       printf("字符:\" %c \"\n",op);

scanf("%d",&data2);

printf("%d+%d=%d\n",data1,data2,data1+data2);

10.数组的定义中,{}中只能为常量,不可以为变量,即使已经赋值的也不行

       Int a=10,b={a}    错误的

11.所有数组中 不可以 定义数组后,对数组名赋值。数组定义后默认为const类型,不可修改。数组的赋值,只能初始化时,或者定义后一个一个赋值

    错误示例:   char string[20];  

string =“I love China!”;   string[]=“I love China!”;(错误)

    String[20] =“I love China!”;可以,但是输出乱码。/会提示出错,可运行/

12.常量中“0或-0”开始的数字都为8进制,“\+整数”结尾的为ASIC码。

字符串中常出现 “char *s="\t a \01 8 b c" “6个   ” char *s=" \t a \017 b c “ “5个

13.逗号运算符:“z=x++,y++,++y”=“++y“

14与“\t”不同  ;包含了数据,数据+空格=8位

      %8.6f:该数据最少8位宽

15.  sqrt()   返回——double   不可以 %

转义字符:

16. 字符串以“\0结尾字符常量没有字符串数组定义时,必须把‘\0

       算入其中多预留以为字节。例如:s[6]=”abcde第六位是 ‘\0

17.  strcpy(a,b);  复制b到a,\0 也复制

a>b(长度)以b中’\0’结尾, 多余部分不变

a<b  崩溃

18.  strcmp(str1,str2),按ASCII值大小相比较,从第一个逐个比较,出现大小就退出,不比较后续。‘\0’

若str1=str2,则返回零;

若str1<str2,则返回负数;

若str1>str2,则返回正数。

19.辗转相除法求、最大公约数、公倍数。

         最大公约数:2个数相除,余数反复除以小的。

        C语言第七篇:辗转相除法求最大公约数_刘兵马俑的博客-CSDN博客_辗转相除法c语言代码

      最小公倍数;两数相乘再除以最大公约数

       https://jingyan.baidu.com/article/2d5afd69f5bdb585a2e28e88.html

  设:9    15

15=9+6  即:6和9的最大公约数;——6和3的

20.二维数组的定义初始化:

      数组的定义不可以有变量,未知数,n

      行数可以省略列数不行

      二维数组用大括号确定是哪一行的;

              Int a[3][4]={ {1 2},{5},{ 0 8 6}}

   1 2 0 0      

   5 0 0 0     

   0 8 6 0     

21.输入输出相关;

      1. gets与scanf的区别:

scanf("%s",s)如果输入了空格会认为字符串结束空格后的字符将作为下一个输入项处理

gets()函数将接收输入的整个字符串直到遇到换行为止

scanf遇到输入数字后输入字母,数字后的回车键会被误认为字符,被当成字母——回车干扰问题

      2.printf(指针,需要输出的数值1,数值2,数值3)

1.这种输出形式:数值分别对应,指针中从首地址开始的输出格式符,多余的数值无用。     

例1:

char *f="%s,a=%d,b=%d\n";

printf(f,"a+=b",a,b);

%s   "a+=b"

%d    a

%d    b

     例2:若f的地址发生变化,则数值对应首地址之后要显示出来的地址。

    char *p="%d,a=%d,b=%d\n";  printf(p,c,a,b);

原本对应关系: c     a    b       显示 : 1,a=10,b=100;

p+=3;后       c,   a  

      首地址为a ,此时第一个%d不显示,第二个对应c,第三个对应a,最后的b忽略。

22. 实参和形参都占用独立的存储单元,各不相关

      实参可以是常量、变量、表达式、函数等任意类型,

形参只能是变量

实参————形参   ,方式:单向值传递

      如果形参与实参的类型不一致,以形参类型为准  

如果函数的类型与返回值类型不一致,以函数类型为准

例子: 实参: a[3][4]———形参 :a[][6]或者a[1][2]或a[6][8]

      实参传入的是数组地址,形参接收地址。然后按照自己的范围输出。这里输出6列/1-1/6行-8列,从左到右排列,不足的用随机数补足。

23.函数:

             Int 可以缺省定义 是隐含的类型

   auto:  凡是函数中未指定存储类别的局部变量,其隐含的存储类别为:auto

      static:   在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是static

24. 如果在一个复合语句中定义了一个变量 ,只能在复合语句中作用

25.常用函数:

        Extern 在定义点之前的函数想引用该全局变量,则应该在引用之前用关键字 extern 对该变量作“外部变量声明”,表示该变量是一个已经定义的外部变量。有了此声明,就可以从“声明”处起,合法地使用该外部变量。

                    

26.计算长度   strlen  sizeof

                     Sizeof: 一般用于数字数组的计算,包括 \0   只算 占用空间大小

a=sizeof(a)/sizeof(int)

                     Strlen: 用于字符数组的计算,不包括 \0,  只算数据个数

char *a=“acn”;strlen(a);

              指针的存储用的是长整型,所以为 sizeof(a)=4. sizeof(*a)=1

             

27.  一般我们用 %p输出地址,但地址其实也数值,可以用%d输出,进行整数化。

printf("%d",&a) ;输出地址为10进制

printf("%p“,&a); 输出地址为16进制

28.

             

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值