struct函数 隐式类型转换(实例)

简介: struct函数 隐式类型转换(实例)
#define _CRT_SECURE_NO_WARNINGS 1 
#include<stdio.h>
//struct Name//struct 自定义函数
//{
//    char name[20];
//    char id[20];
//    char cord[20];
//};
//int main()
//{
//    struct Name b = { "家辉", "01.02", "家辉儿子" };
//    struct Name* pb = &b;
//    printf("名字:%s\n", (*pb).name);//(*结构体指针).name
//    printf("生日:%s\n", (*pb).id);  //用地址打印struct Name函数
//    printf("生日:%s\n", (*pb).cord);
//    printf("\n");//换行
//    //也可写成
//    printf("名字:%s\n", pb->name);   //结构体指针->成员名
//    printf("生日:%s\n", pb->id);
//    printf("生日:%s\n", pb->cord);
//    printf("\n");
//    //也可写成                       //结构体指针.成员名
//    printf("名字:%s\n", b.name);
//    printf("生日:%s\n", b.id);
//    printf("生日:%s\n", b.cord);
//    return 0;
//}
//隐式类型转换------需要整型提升(short,char型)变为(int型)(分为正数和负数),然后截断,并只留下最后八位
//正数,如char i=8; 为00001000---->00000000000000000000000000001000
//负数,如char i=-8;为10001000---->11111111111111111111111110001000
//无符号整型,高位补0;unsigned i=8;00001000---->00000000000000000000000000001000
//int main()
//{
//    char a = 3;  //00000000000000000000000000000011截断,变为00000011(int)
//    char b = 127;//00000000000000000000000001111111截断,变为01111111(int)
//    char c = a + b;//c为int型a,b相加:01111111+00000011=10000010(第一位为1,负数,所以变为二进制时其他位补1)
//    //10000010变为二进制11111111111111111111111110000010(计算机显示的是补码)
//    //            反码为11111111111111111111111110000001(补码-1)
//    //            原码为10000000000000000000000001111110(反码相反数),为-126
//    printf("%d\n", c);//打印结果为-126
//    return 0;
//}
//int main()
//{
//    char a = 0xb6;//char  short型,小于int型,转变后,不等于原来的值
//    short b = 0xb600;
//    int c = 0xb6000000;
//    if (a == 0xb6)
//    {
//        printf("a\n");
//    }
//    if (b == 0xb600)
//    {
//        printf("b\n");
//    }
//    if (c = 0xb6000000)
//    {
//        printf("c\n");
//    }
//    return 0;
//}
//int main()
//{
//    char a = 0xb6;//char  short型,小于int型,转变后,不等于原来的值
//    short b = 0xb600;
//    int c = 0xb6000000;
//    if (a == 0xb6)
//    {
//        printf("a\n");
//    }
//    if (b == 0xb600)
//    {
//        printf("b\n");
//    }
//    if (c = 0xb6000000)
//    {
//        printf("c\n");
//    }
//    return 0;
//}
int main()
{
    char c = 1;               //%u是打印有个unsigned的数
    printf("%u\n", sizeof(c));//打印结果为1
    printf("%u\n", sizeof(+c));//打印结果为4
    printf("%u\n", sizeof(-c));//打印结果为4
    return 0;
}


相关文章
|
6月前
|
存储 编译器 Linux
【C语言】自定义类型:结构体深入解析(二)结构体内存对齐&&宏offsetof计算偏移量&&结构体传参
【C语言】自定义类型:结构体深入解析(二)结构体内存对齐&&宏offsetof计算偏移量&&结构体传参
|
6月前
函数与结构体
函数与结构体
35 3
|
6月前
|
存储 C语言
C语言结构体—自定义类型—struct
C语言结构体—自定义类型—struct
48 0
|
6月前
|
存储 C++
C/C++自定义类型(详解struct,enum,union)
C/C++自定义类型(详解struct,enum,union)
|
6月前
|
编译器 C++
C++ 中 const 和 constexpr 关键字解析:常量、函数和指针
很多 C++ 的初学者看到 const 这个关键字的第一反应都是一头雾水,主要是因为 const可 以出现在很多的位置,以及后面加入的 constexpr 更是常常感到困惑,今天就为大家一一解释出现它们的含义和以及作用
175 0
|
6月前
|
存储 C++
[C++] 结构体Struct类型和变量定义
[C++] 结构体Struct类型和变量定义
114 0
|
C语言
函数类型和函数指针
函数类型和函数指针
96 0
|
存储 编译器 Linux
【C/自定义类型详解】——结构体(struct)、位段、枚举(enum)、联合(union)
【C/自定义类型详解】——结构体(struct)、位段、枚举(enum)、联合(union)
|
存储 C语言
C语言,枚举,struct,typedef,union的使用
C语言,枚举,struct,typedef,union的使用
error C2375: “WSACleanup”: 重定义 C2011 “sockaddr_in”:“struct”类型重定义
error C2375: “WSACleanup”: 重定义 C2011 “sockaddr_in”:“struct”类型重定义
668 0
error C2375: “WSACleanup”: 重定义 C2011 “sockaddr_in”:“struct”类型重定义
下一篇
无影云桌面