小编sak*_*thi的帖子

switch语句中的变量定义

在下面的代码中,为什么变量i没有赋值1

#include <stdio.h>      

int main(void)
{   
    int val = 0;
    switch (val) {         
        int i = 1;   //i is defined here

        case 0:
            printf("value: %d\n", i);
            break;
        default:
            printf("value: %d\n", i);
            break;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我编译时,我会收到一个警告,即i尽管int i = 1;它已经初始化,但仍未进行初始化

$ gcc -Wall test.c
warning: ‘i’ is used uninitialized in this function [-Wuninitialized]
    printf("value %d\n", i);
    ^
Run Code Online (Sandbox Code Playgroud)

如果val = 0,那么输出是0.

如果val = 1或其他任何东西,那么输出也是0.

请向我解释为什么i声明变量但在开关内没有定义.标识符 …

c initialization declaration switch-statement

13
推荐指数
2
解决办法
4022
查看次数

什么是echo $?在linux终端?

我试过这些命令.

~$top
(ctrl + z)stopped the process
~$echo $?
147
~$top
(ctrl + c)killed the process
~$echo $?
0
Run Code Online (Sandbox Code Playgroud)

这里发生了什么,请解释一下,为什么它显示出一些恒定的价值.这些价值观的含义是什么?

linux

8
推荐指数
2
解决办法
3万
查看次数

c中嵌套结构的内存布局

我理解C中的结构概念.我也理解结构如何存储在内存中.所以我创造了以下内容:

  struct tag1 {
      char a;
      int b;
  }var1;
Run Code Online (Sandbox Code Playgroud)

结构的大小是8个字节(以gcc为单位).

内存布局示例.

 -----------
|  |  |  |  | ---> char a (only 1 byte is used and remaining 3 bytes are padding)
 -----------
|  |  |  |  | ---> int b (4 byte is used)
 -----------
Run Code Online (Sandbox Code Playgroud)

现在我对这个示例程序有一些疑问.嵌套结构如何存储在内存中.

  struct tag1{
      int a;
      struct tag2{
          long b;
      }var1;
  }var2;
Run Code Online (Sandbox Code Playgroud)

c structure

8
推荐指数
1
解决办法
1387
查看次数

如何在c中获取另一个进程的pid?

我正在使用getpid并获取当前进程的pid。现在,我尝试使用进程名称获取其他进程的pid。如何获取其他进程的pid?

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>

int main(void)
{
    printf("My pid:%d\n", getpid());

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c linux system embedded-linux

5
推荐指数
2
解决办法
1万
查看次数