美文网首页
重新开始的c语言

重新开始的c语言

作者: ie大博 | 来源:发表于2016-10-18 19:43 被阅读0次

c语言中怎样用scanf()读入带空格的字符串

#include <stdio.h>
int main()
{
    char str[128];
    scanf( "%[^\n]", str );
    printf( "%s\n", str );
    return 0;
}

c语言编译常识

  • gcc hanshu.c -o hanshu:生成了一个可运行的文件,文件名称可以自己定,hanshu.c只是随便一个代码文件,注意后面的命名不要和前面的相同。
  • gcc hanshu.c -o hanshu -g -wall,:-g -wall是开启所有的语法警告。
  • 我的电脑是小端法存储,其显示结果是103,说明地址0xf1存的是67.
  • %p输出变量的地址
int main()
{

    int a = 0x1234567;
    char *p = (char*)&a;
    //char *p = char *(&a);
    printf("*p=%d",*p);
    return 0;
}
  • 打印双引号,需要加转译字符"
  • 打印%,需要在其前再加一个%
  • 打印,需要在其前面加一个\
  • 打印’ 需要加\

char型的asc码的一些数值

  • ' 空格 ':空格的asc码是32
  • ‘0’是32
  • '\0'是0
  • ‘A’是65
  • ‘a’是97

scanf===scan formatter扫描 格式化

强制类型转换(type)

int main()

{
    int a=9;
    int b=8;
    float c=a/(float)b;////价格(float)转换了b的类型,实际上转换了8成8.0000000

    printf("c=%f",c);
    return 0;

}

位运算

  • |或运算:::3:的二进制:0011······5的二进制:0101:::3|5表示0111;其意义是二进制,有1结果就是1
  • &与运算:::必须两个都为1,结果才是1
  • ^异或:::表示一个为1结果才是1,如果两个都是1,结果为0;
  • ~取反:::3的取反为4.取反都是在补码的基础上操作的。

原码,反码,补码

  • 反码:正数的反码与原码;负数的反码在原码的基础上,符号位不变,后面依次取反。
  • 补码:正数的补码与原码相同;负数的补码在反码的基础上+1。数据在内存当中是以补码的形式存在。
  • -3取反:
    原码:1000 0000 |0000 0000 |0000 0000 |0000 0011
    反码:1111 1111 |1111 1111 |1111 1111 |1111 1100
    补码:1111 1111 |1111 1111 |1111 1111 |1111 1101
    在这基础上全部取反
    ~(-3)
    0000 0000 |0000 0000 |0000 0000 |0000 0010
    正数的反码,补码都一样。
    所以结果是2.

左移,右移:

案例:-3的左移2位(-3)<<2

-3的原码:1000 0000 |0000 0000 |0000 0000 |0000 0011
-3的反码:1111 1111 |1111 1111 |1111 1111 |1111 1100
-3的补码:1111 1111 |1111 1111 |1111 1111 |1111 1101
左移两位:1111 1111 |1111 1111 |1111 1111 |1111 0100
左移反码:1111 1111 |1111 1111 |1111 1111 |1111 0011
左移原码1000 0000 |0000 0000 |0000 0000 |0000 1100

案例:-3的右移两位:注意左边是以符号位补全

-3的原码:1000 0000 |0000 0000 |0000 0000 |0000 0011
-3的反码:1111 1111 |1111 1111 |1111 1111 |1111 1100
-3的补码:1111 1111 |1111 1111 |1111 1111 |1111 1101
-右移两位:1111 1111 |1111 1111 |1111 1111 |1111 1111
右移后反码:1111 1111 |1111 1111 |1111 1111 |1111 1110
右移后原码:1000 0000 |0000 0000 |0000 0000 |0000 0001

一个特殊的例子

{
    int a=1;
    int b=12;
    if(a++||b--)
    {
        printf("a=%d\n",a);///a自加1,所以打出来。
        printf("b=%d\n",b);///因为a已经成立了,
                           所以b不会自加1就进入到判断里面了,结果a=2,b=12.
    }   
    return 0;


}

unsigned的使用

int main()
{
    unsigned char a=-1;////这里的-1,它的补码存储:1111 1111,
    因为他是没有正负号,所以我们默认它为正,把补码变成原码,它就是255.
    int i=0;
    printf("a=%d",a);
    while(a>0)
    {
        a--;
        i++;
    }
        printf("a=%d",a);
        printf("i=%d",i);
    return 0;
}

用二维数组写菱形,

{   
    int i,j;
    char a=' ';
    char b='*';
    int  arr[5][5]={
                        {a,a,b,a,a},
                        {a,b,a,b,a},
                        {b,a,a,a,b},
                        {a,b,a,b,a},
                        {a,a,b,a,a},
                    };///如果arr是char型的,逗号就没办法处理
    for(i=0;i<5;i++)
    {
        for(j=0;j<5;j++)
        {
            printf("%c",arr[i][j]);

        }
        printf("\n");
    }
    return 0;

}

continue和break

相关文章

  • 重新开始的c语言

    c语言中怎样用scanf()读入带空格的字符串 c语言编译常识 gcc hanshu.c -o hanshu:...

  • 题记

    今天刚刚涉足java领域。以前具有c语言基础。由于求职需要,决定重新开始学习一门新的语言。暂且将学习过程中的点滴在...

  • C++简答题

    一、简答题 1、C语言与C++语言的区别? 答: C语言是面向过程语言,C++是面向对象语言(OOP) C语言...

  • 慕课网-c++教程起航篇-学习笔记

    c++教程起航篇 C语言是C++的子集。 c语言是面向过程的语言,而C++是面向过程的语言又是面向对象的语言。 C...

  • C小白

    一 C语言概述(what)①C语言的特点C语言是一种底层语言,小型语言,包容性语言②C语言的优点高效。可移植。功...

  • C++语言学习之面向对象

    1.C语言与C++语言的区别 C++面向对象 C 面向过程 函数+结构体 C++可以运行调用C语言 反之 C语言无...

  • C++远征之起航篇

    C++和C语言的联系与区别: C++是C语言发展而来,C语言是C++的子集 C++更高效3.相对于C语言,C++添...

  • C#和C++语言的区别在哪?哪个语言更好?

    语言类型 C++是一种低级语言,而C是高级语言。 轻量级语言 C++是一种轻量级的语言,与C语言相比,C语言的库需...

  • 学习了C语言之后还是感觉不会编程,应该怎么办?其实你想错了!给你

    本节内容 C语言的历史,C语言的优缺点以及如何高效的使用C语言 C语言还值得学习吗?C语言查错的工具思维导图 图片...

  • 新手C语言教程第一弹|感性认识一波C语言

    什么是C语言 为什么选择C语言作为初学者首先接受的语言呢,因为C语言是很多语言的基础,C++语言是C语言的超集,J...

网友评论

      本文标题:重新开始的c语言

      本文链接:https://www.haomeiwen.com/subject/wkygyttx.html