C语言入门课程学习记录4:有符号无符号,数据类型


本文学习自狄泰软件学院 唐佐林老师的 C语言入门课程,图片全部来源于课程PPT,仅用于个人学习记录

第18课 - signed 与 unsigned

在这里插入图片描述
在这里插入图片描述

#include <stdio.h>

int main()
{
    short s = 32767;// 0111 1111 1111 1111
    int i = 2147483647;//  0111 1111 1111 1111 1111 1111 1111 1111

    short ss = -32768;//1000 0000 0000 0000
    int ii = -2147483648;//1000 0000 0000 0000 0000 0000 0000 0000 

    printf("s = %d\n", s);
    printf("i = %d\n", i);

    s = s + 1;//1000 0000 0000 0000 
    i = i + 1;//1000 0000 0000 0000 0000 0000 0000 0000 

    printf("after:s = %d\n", s);
    printf("after:i = %d\n", i);

    printf("ss = %d\n", ss);
    printf("ii = %d\n", ii);

    ss = ss - 1;//0111 1111 1111 1111
    ii = ii - 1;// 0111 1111 1111 1111 1111 1111 1111 1111

    printf("after:ss = %d\n", ss);
    printf("after:ii = %d\n", ii);

    return 0;
}




    /*
    output:
s = 32767
i = 2147483647
after:s = -32768
after:i = -2147483648
ss = -32768
ii = -2147483648
after:ss = 32767
after:ii = 2147483647
    */

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#include <stdio.h>

int main()
{
    unsigned char uc = 128;
    char c = 128;

    unsigned ui = 2147483648;
    signed i = 2147483648;

    printf("uc = %u\n", uc);
    printf("c = %d\n", c);

    printf("ui = %u\n", ui);
    printf("i = %d\n", i);

    return 0;
}




    /*
    output:
uc = 128
c = -128
ui = 2147483648
i = -2147483648
    */

在这里插入图片描述

第19课 - 再论数据类型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#include <stdio.h>

int main()
{
    int c = sizeof(char);//1
    int s = sizeof(short);//2
    int i = sizeof(s);//4

    int uc = sizeof(unsigned char);//1
    int us = sizeof(unsigned short);//2
    int ui = sizeof(unsigned int);//4

    printf("c = %d\n", c);
    printf("s = %d\n", s);
    printf("i = %d\n", i);

    printf("sizeof(float) = %d\n", sizeof(float));//4
    printf("sizeof(double) = %d\n", sizeof(double));//8

    printf("uc = %d\n", uc);
    printf("us = %d\n", us);
    printf("ui = %d\n", ui);

    return 0;
}




    /*
    output:
c = 1
s = 2
i = 4
sizeof(float) = 4
sizeof(double) = 8
uc = 1
us = 2
ui = 4
    */

在这里插入图片描述
在这里插入图片描述

#include <stdio.h>

int main()
{
    long l = -1l;
    long long ll = 21474836481ll;

    printf("l = %ld\n", l);
    printf("sizeof(long) = %d\n", sizeof(long));

    printf("ll = %lld\n", ll);
    printf("sizeof(long long) = %d\n", sizeof ll);

    return 0;
}




    /*
    output:
l = -1
sizeof(long) = 4
ll = 21474836481
sizeof(long long) = 8
    */

在这里插入图片描述
在这里插入图片描述

第20课 - 经典问题剖析

在这里插入图片描述
a=a+7 √

b=a+b;
a=b; √
a=(int)(12.3/4); √ 强制类型转换
a+7=b+1; × a+7不是变量
在这里插入图片描述
在这里插入图片描述
D
在这里插入图片描述
B
在这里插入图片描述
在这里插入图片描述
D

在这里插入图片描述
输出16
在这里插入图片描述
x<0 ,y=-1;
x=0时,y=0;
x>0时,y=1
此为错误答案
在这里插入图片描述
x=0,y=-1;
x>0,y=1;
x<0,y=0;
在这里插入图片描述
A,此为错误答案
D,else前漏了;

在这里插入图片描述
k 2 4
s 1 1+2 1+2+3 6+4 15 1 5 10
j 2 3 4 5 6 4 5 6
B
在这里插入图片描述
C

在这里插入图片描述
9 6 3
8 5 2
C

第21课 - 程序中的辅助语句(上)

在这里插入图片描述
在这里插入图片描述

#include <stdio.h>

int main()
{
    int a = 0;
    int b = 10;

    a = b = b + 1; // a=>11  b=>11

    printf("a = %d, b = %d\n", a, b);

    a += 1;
    a -= 2;
    a *= 3;
    a /= 4;

    // a => 7

    printf("a = %d\n", a);

    /*
        复合赋值与连续赋值相结合
    */
    a += b -= 1;

    printf("a = %d, b = %d\n", a, b);

    return 0;
}




    /*
    output:
a = 11, b = 11
a = 7
a = 17, b = 10
    */

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

#include <stdio.h>

int main()
{
    int a = 0;
    int b = 10;
    int c = 0;

    a = (b < 10) ? 1 : 2;

    printf("a = %d\n", a);

    (a < 5) ? (a = 5) : (a = 0);

    printf("a = %d\n", a);

    /*
    ((a == 5) ? a : b) = 10; // ERROR
    */

    a = b = c = 0;

    c = (a = 2, b = 3, a + b);

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

    c -= a;  // c = c - a;

    printf("c = %d\n", c);

    return 0;
}




    /*
    output:
a = 2
a = 5
a = 2
b = 3
c = 5
c = 3
    */

在这里插入图片描述

第22课 - 程序中的辅助语句(下)

在这里插入图片描述
在这里插入图片描述

#include <stdio.h>

int main()
{
    int a = 0;
    int c = 1;

    a = -c++;  // c -> 2

    printf("a = %d\n", a);

    //a = +++c; // +(++c); c -> 3//error: lvalue required as increment operand|
    a = +(++c);
    printf("a = %d\n", a);

    a = -c--;  // c -> 2

    printf("a = %d\n", a);

    printf("c = %d\n", c);

    return 0;
}




    /*
    output:
a = -1
a = 3
a = -3
c = 2
    */

在这里插入图片描述

int main()
{
    int a = 0;
    int c = 1;

    if( a + c > 0 )
    {
        printf("a = %d, c = %d\n", a, c);
        goto ELSE;
    }
    else
    {
        ELSE: printf("%d + %d = %d\n", a, c, a + c);
        goto FOR;
    }

    for(c=10; c>0; c--)
    {
        FOR:
        printf("c = %d\n", c);
    }

    return 0;
}




    /*
    output:
a = 0, c = 1
0 + 1 = 1
c = 1
    */

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值