C语言基础知识以及关键细节小结(1)

  1. c语言运行时:用编译器把源程序(.c或 .cpp结尾)编译为汇编代码(.s结尾),汇编器把汇编代码编译为目标代码(以.obj或.o结尾),链接器把库代码和启动代码和目标代码链接在一起,生成可执行代码(以.exe结尾)
  2. GUN编译器集合被称作GCC,用gcc命令就可以调用GCC C编译器;gcc命令可以用cc代替
  3. getchar(); 可以实现程序完成后,输入一个键窗口才消失的效果
  4. int main(void); int表明main()函数返回一个整数,void表示没有参数
  5. 注释有两种/*  这种是可以输入很多行的  */;//这种只能有一行,但是可以在任意一行
  6. <stdio.h>是标准输入输出文件,使用printf()函数和scanf()函数应该包含这个头文件
  7. 变量必须先声明后使用
  8. int dogs, bilibili = 1; 这种方式可以,但是不推荐使用,很容易让人不经意间误解含义,所以最好不要把初始化的变量和未初始化的变量放在同一条声明中。
  9. 十进制显示 %d ,以八进制显示%o ,以十六进制显示 %x。但如果要显示0x12,072这种格式,需要相应的变为%#o,%#x,%#X
  10. short int 可以short (long 同理),long long  int可以写成long long;short ,short int,signed short,signed short int 都是同一种类型。
  11. long 使用%ld ,double使用%lf,short 的有%hd %ho %hx;;;;类似的还有lu ;lld,llu等等等等
  12. 单引号内叫字符,双引号叫字符串
  13. 从技术上看,char是整数类型。%d打印char类型,打印的是一个整数
  14. float 类型有效数字至少6位,double类型精度为至少13位有效数字
  15. scanf()遇到空白(空格,制表符,换行符)就不再读取输入
  16. printf(“|%5d|%5.3d|%05d|%05.3\n”,5,5,5,5)
    
    |    5|  005|00005|  005
    
    这行代码告诉我们,如何在整形变量中使用精度(%5.3d)生成足够的前导0来满足最小的位数。使用0标记则会使用前导0填充满整个字段宽度。最后,如果0标记和精度一起出现,0会被忽略
  17. printf(“%2s\n%10.5s","abcdefg")
    abcdefg
         abcde

        这行代码告诉我们,虽然第一个宽度为2,但还是会自动扩展为可容纳字符串的长度。二是精度值则是打印字符的个数

  1. printf函数返回值是打印的字符的个数,如果出错,返回一个负值;scanf函数返回成功读取的项数
  2. 双引号不能直接用回车键换行,但可以用反斜杠\
  3. %*d在printf()中可以用参数确定精度值,在scanf()函数中 会抑制赋值,比如scanf(“%*d %*d %d”,&n)输入 4 5 6则n = 6
  4. scanf()把字符串放入数组时,比如scanf(“%s”,a),它会在字符序列的末尾加上‘\0’
  5. getchar()读取单个字符,fgets()读取包含空格的字符串
  6. 模除运算符号只看前者 -11%5=-1 11%-5=1,模除时只要ab都是整数,就可以通过a-(a/b)*b来计算
  7. C语言写法
    while(++a>0)
    {
    statement
    }
    比下面的写法好
    while(a>0)
    {
    statement
    a++;
    }
  8. a=(i++)+(i++*3)这种写法无法保证结果,编译器不同结果不同。无法确定先执行前面的括号还是后面的括号;但是逗号却可以规定顺序,比如a=(b++,b+2,b*3),从左边执行,执行完一个,把b的值确定好再执行下一个,最后整个表达式的值是最右边的。与此对应的是,赋值表达式的值是最左边的,比如if 3 ==(a=2) ,等价于if 3 == 2
  9. 专业一点的说法——序列点:在一个语句中赋值运算符,递增递减运算符对对象做的改变在序列点的后面语句执行之前完成。逗号,分号都是序列点
  10. 当作为参数传递时,char和short 都会被自动转换为int ,float会被转换为double
  11. 强制转换类型 比如 (int)a
  12. 另一个C语言写法
    while(scanf("%d",&a)==1)//当输入一个整数时才循环
    {
    statement
    }
    *********************************
    while(sacnf("%d",&a)==1)用来跳过整数输入
    ;
  13. for循环可以很多样化
    for(ch="a";ch<"z";ch++)
    for(dabt=1;debt*debt<100;debt=debt*100)
    for(i=0,j=0;i*j<100;i+=1,j*=54)
    但注意,第一个表达式只能执行一次
  • 下一篇从数组开始讲,这次就到这里
  • 当然我要解释一下,为什么内容那么杂乱,因为很简单很零散,所以很基础的东西我就没有讲
  • 当然当然,这是我复习的时候看了一遍书圈下来的知识点,所以在一定程度上只能适用于一部分人
  • 最后,有错误欢迎指出
  • 作者:板蓝根的板蓝
  • 公众号:码与人生
  • 邮箱:3338484750@qq.com



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值