关于#c语言#的问题,请各位专家解答!不知道哪里错了,运行不出来

#includeint main() { int a=0,b=0,c=0,d=0; if(a=1) b=1;c=2; else d=3; printf("%d,%d,%d,%d",a,b,c,d); return 0; }

img


#include <stdio.h> 

int main() { 
  int a=0, b=0, c=0, d=0; 
  
  if (a == 0) {
    b = 2;
    c = 2;
  } else {
    d = 3;
  }
  
  printf("%d,%d,%d,%d",a,b,c,d); 
  return 0; 
}

if不加括号只能走下面一句。else没有if先匹配

img

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/351133
  • 这篇博客你也可以参考下:非第一页之外的其他页面进行查询时,搜索不到查询结果的解决方法记录
  • 除此之外, 这篇博客: 十分钟看明白C语言结构体(定义,使用,销毁)中的 结构体的复制 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    如果结构体中包含有指针类型,那么复制就有两种:

    1. 浅复制:直接用等号,效果是把结构体数组直接包含的一切值都复制过来,指针的指向的地址也复制过来,但并不会把地址中的内容也复制一份,换言之,复制出来的结构体变量的指针依然指向之前动态分配的空间。

    浅复制代码。

    char *aname = (char*)malloc(10*sizeof(char));
    strcpy(aname, "test1");
    Student a = {1001, aname, true};
    
    Student b;
    b = a;
    

    浅复制效果。

    test1.name:test1 test2.name:test1
    test1.name ptr:0000000000736AB0 test2.name ptr:0000000000736AB0
    
    1. 深复制:先把指针指向的空间中的内容,找一块新空间复制一下,然后再复制结构体变量,并且指针指向新的空间。这时,他们的指针指向的地址不同,但空间中的内容相同。
      可以把上面结构体的name改成char*类型,看看效果。

    深复制代码。

    char *aname = (char*)malloc(10*sizeof(char));
    strcpy(aname, "test1");
    Student a = {1001, aname, true};
    
    Student b;
    b = a;
    b.name = (char*)malloc(10*sizeof(char));
    strcpy(b.name, a.name);
    

    深复制效果(看地址的倒数第二位,是不同的)。

    test1.name:test1 test2.name:test1
    test1.name ptr:0000000000BD6AB0 test2.name ptr:0000000000BD6AD0
    
  • 您还可以看一下 王西猛老师的商超收银软件中的扫码识别商品编程解析课程中的 扫描枪扫码识别解析概述小节, 巩固相关知识点

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^