zoukankan      html  css  js  c++  java
  • 关于c语言的探究

     逻辑短路

    原来的代码是

    if (temp == 3 && (a % b != 0 || b == 0 )){
             printf("go");      
    }
    

      

    dev-c 报错:

    program received signal sigsegv arithmetic **

    改正后

     

    c语言&&和||的短路性质分析 - 痞子晶的博客 - CSDN博客

    https://blog.csdn.net/yhj110911119/article/details/52436085

    C语言的短路现象 - blue_apolo的博客 - CSDN博客  

    https://blog.csdn.net/blue_apolo/article/details/51831320


    结构体分析

    typedef struct{
        int a;
        int b;
        int c;
        int d;
    } TD;

    完整代码如下

    #include <stdio.h>
    
    typedef struct{
        int a;
        int b;
        int c;
        int d;
    } TD;
    
    //typedef int[4] intx4;
    int LLsize =  sizeof(long long);
    int INTsize =  sizeof(int);
    int PINTsize = sizeof(int *);
    
    int main(void) { 
        
        TD data;
        TD *dataPtr;
        dataPtr  = &data;
        
        dataPtr->a=0xA00AA11A;
        dataPtr->b=0xB00BB22B;
        dataPtr->c=0xC00CC33C;
        dataPtr->d=0xD00DD44D;
        
        printf("Sizeof int is %d Bytes
    ", INTsize);
        printf("Sizeof pint is %d Bytes
    ", PINTsize);
        printf("Sizeof Long Long is %d Bytes
    ", LLsize);
        printf("[start]: 
    ");
        printf("%llx   
    ", *(TD *)dataPtr);
    printf(
    "ALL DATA is { "); // 下面通过移动指针来打印数据(移动距离以 int 类型大小为一个单位。) printf("%llX ", *(((int *)(dataPtr)) + 0)); //等效于 printf("%llX ", *(int *)dataPtr); printf("%llX ", *(((int *)(dataPtr)) + 1)); printf("%llX ", *(((int *)(dataPtr)) + 2)); printf("%llX ", *(((int *)(dataPtr)) + 3)); printf("} "); printf(" ABCD is: "); printf("%X ", (*dataPtr).a); printf("%X ", (*dataPtr).b); printf("%X ", (*dataPtr).c); printf("%X ", (*dataPtr).d); printf(" ABCD's pointer is: "); printf("%p ", &(*dataPtr).a); printf("%p ", &(*dataPtr).b); printf("%p ", &(*dataPtr).c); printf("%p ", &(*dataPtr).d); printf("[End]"); return 0; }

    输出结果

    Sizeof int is 4 Bytes
    Sizeof pint is 8 Bytes
    Sizeof Long Long is 8 Bytes
    [start]: 
    b00bb22ba00aa11a   
    ALL DATA is {
    A00AA11A   
    B00BB22B   
    C00CC33C   
    D00DD44D   
    }      
    
    
    ABCD is:  
    A00AA11A   
    B00BB22B   
    C00CC33C   
    D00DD44D   
    
    
    
    ABCD's pointer is: 
    0x7ffe7b2715b0   
    0x7ffe7b2715b4   
    0x7ffe7b2715b8   
    0x7ffe7b2715bc   
    [End]

    在线测试:https://c.runoob.com/compile/11

     结论:结构体是一段线性空间,里面仅包含了所有变量,不包含本结构体的大小等信息。结构体本身所在首地址结构体里第一变量的首地址是相同的。

    另外,结构体还有内存空间对齐的知识,见 《C Primer Plus》

    --------蓝天上的云_转载请注明出处.
  • 相关阅读:
    Debian Linux 5 时间设定相关与时间同步
    javascript的基本类型
    判断浏览器的类型
    用C#打开IE
    MAC ADDRESS LOOKUP
    HP大中华区总裁辞职信
    原始的JavaScript创建
    .NET应用程序域
    显示接口实现与隐式接口实现
    [转载]MVC Razor 语法(转)
  • 原文地址:https://www.cnblogs.com/yucloud/p/9902004.html
Copyright © 2011-2022 走看看