小编nou*_*fal的帖子

typedef enum,在其中赋值

用gcc C99编译

我一直在使用enums一段时间.但是,我正在使用一些示例代码来开发我的应用程序.我偶然发现了一些像这样的代码.我被告知这是使用枚举时的最佳实践.但我不知道这有什么好处.

typedef enum {
    TYPE_DATE,
    TYPE_TIME,
    TYPE_MONEY,

    TYPE_COUNT,
    TYPE_UNKNOWN = TYPE_COUNT
} string_type_e;
Run Code Online (Sandbox Code Playgroud)

为什么TYPE_COUNT要分配TYPE_COUNTTYPE_UNKNOWN谁?

非常感谢任何建议,

c enums

11
推荐指数
2
解决办法
4万
查看次数

为什么struct hostent中的h_addr_list是char**而不是struct in_addr**?

我是网络编程的新手.以下结构定义对我来说非常困惑.这h_addr_list是一个定义为字符串数组,但它用于存储in_addr结构数组.它为什么不定义struct in_addr **h_addr_list而不是char **h_addr_list

struct hostent 
{
    char *h_name;       /* Official domain name of host */
    char **h_aliases;   /* Null-terminated array of domain names */
    int h_addrtype;     /* Host address type (AF_INET) */
    int h_length;       /* Length of an address, in bytes */
    char **h_addr_list;     /* Null-terminated array of in_addr structs */
};


struct in_addr 
{
    unsigned int s_addr; /* Network byte order (big-endian) */
};
Run Code Online (Sandbox Code Playgroud)

c struct pointers network-programming

9
推荐指数
1
解决办法
4630
查看次数

如何在不使用if或for的情况下查找数字是正数,负数还是零?

我想在微处理器中实现符号和零标志设置.因此,我需要编写一个函数来查找数字是正数,负数还是零而不使用iffor循环,并且只允许使用布尔和位运算符.我做了以下.但是我如何实现它的zero条件?

int status (int x) {
    int sign = (x >> 31);
    return sign;
}
Run Code Online (Sandbox Code Playgroud)

有什么建议 ?

c logic boolean function

6
推荐指数
1
解决办法
4412
查看次数

从现有矩阵中提取矩阵

我编写了一个代码来生成一个包含四列的矩阵,以获得总和等于9的所有数字组合,每个数字从0到9不等.

m = zeros(220, 4);
pd = 9;
i = 1;
for p = 0:1:pd
    for q = 0:1:pd-p
        for a = 0:1:pd-q-p
            m(i,:) = [p, q, a, pd-a-q-p];
            i = i+1;
        end
    end
end
m
Run Code Online (Sandbox Code Playgroud)

现在我想过滤数组没有零,一个零,两个零,三个零.喜欢,三零情况

0 0 0 9
Run Code Online (Sandbox Code Playgroud)

两个零的情况

0 0 1 8
0 0 2 7
.
.
0 0 8 1
Run Code Online (Sandbox Code Playgroud)

一个零例

0 1 1 7
0 1 2 6
.
.
.
0 7 1 1
Run Code Online (Sandbox Code Playgroud)

并且没有零情况

1 1 1 6
1 1 2 …
Run Code Online (Sandbox Code Playgroud)

matlab matrix

5
推荐指数
3
解决办法
212
查看次数

使用按位运算符生成特定位模式

这里我想生成一个位模式来设置n等于1从位置开始的数字p.数字来自0 to 31.以下是我的所作所为.

int bitPattern(int n, int p) {
    int hex, num1, num2;
    hex = 0x80000000;
    num1 = (hex >> (31 - p));
    num2 = (hex >> (31 - (n+p)));
    return num1 ^ num2;
}
Run Code Online (Sandbox Code Playgroud)

例:

bitPattern(6, 2) should return 
..000011111100
Run Code Online (Sandbox Code Playgroud)

有少量运营商的替代解决方案?

c logic bit-manipulation

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

为什么isdigit()如果为真则返回2048?

任何人都可以解释为什么如果真的isdigit返回2048?我是ctype.h图书馆的新手.

#include <stdio.h>
#include <ctype.h>
int main() {
  char c = '9';
  printf ("%d", isdigit(c));
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

c c++ ctype

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

如何在SDL_surface中设置像素?

我需要从此页面使用以下功能。该SDL_Surface结构被定义为

typedef struct SDL_Surface {
    Uint32 flags;                           /* Read-only */
    SDL_PixelFormat *format;                /* Read-only */
    int w, h;                               /* Read-only */
    Uint16 pitch;                           /* Read-only */
    void *pixels;                           /* Read-write */
    SDL_Rect clip_rect;                     /* Read-only */
    int refcount;                           /* Read-mostly */
} SDL_Surface;
Run Code Online (Sandbox Code Playgroud)

该函数是:

void set_pixel(SDL_Surface *surface, int x, int y, Uint32 pixel)
{
      Uint8 *target_pixel = (Uint8 *)surface->pixels + y * surface->pitch + x * 4;
      *(Uint32 *)target_pixel = pixel;
}
Run Code Online (Sandbox Code Playgroud)

在这里我几乎没有疑问,可能是由于缺乏真实的画面。

  1. 为什么我们需要乘surface->pitch用 …

c c++ graphics sdl

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

在循环中更改变量名称

这是继续我的问题 从现有矩阵中提取矩阵 现在我用代码分离这些矩阵(不正确!)

for i = 3:-1:0
    mat = m((sum((m == 0), 2)==i),:)
end
Run Code Online (Sandbox Code Playgroud)

以上部分是我原来问题的更新,我
想相应地命名,比如

mat1
mat2
mat3
mat4
Run Code Online (Sandbox Code Playgroud)

任何人都可以建议一个简单的方法吗?

matlab for-loop matrix

3
推荐指数
1
解决办法
5821
查看次数

c中函数调用时的类型转换

我正在阅读 K & R 的书The C programming Language来学习 c。它说

由于函数调用的参数是表达式,因此当参数传递给函数时也会发生类型转换。在没有函数原型的情况下,char和short变成int,float变成double。

在过去的几天里,我一直在努力理解这条线。我认为这是很重要的一点。无论我做出什么假设,它都不会实现。有人可以帮助我清楚地理解它吗?

c arguments function type-conversion

3
推荐指数
1
解决办法
1826
查看次数

使用静态变量时出错

我正在学习C.为什么静态变量不会增加1.

#include <stdio.h>

int foo()
{
  static int a = 0;
  return a+1; 
}

int main()
{
  int i;
  for (i = 0; i < 10; i = foo())
    printf("%d\n", i);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

这段代码中的错误在哪里?

c variables static function

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

使用 ostream 和枚举类型重载 &lt;&lt;

以下是我的代码。我正在尝试打印一个枚举数据类型变量,一个直接使用其名称,另一个使用函数返回与原始变量相同的数据类型。

#include <iostream>

using namespace std;
enum days{SUN, MON, TUE, WED, THU, FRI, SAT};


inline days dayaftertomorrow(days d)
{
  return static_cast<days>((static_cast<int>(d) + 2) % 7);
}

ostream& operator<< (ostream& out, days& day)
{
  switch(day)
  {
    case SUN: out << "SUN"; break;
    case MON: out << "MON"; break;
    case TUE: out << "TUE"; break;
    case WED: out << "WED"; break;
    case THU: out << "THU"; break;
    case FRI: out << "FRI"; break;
    case SAT: out << "SAT"; break;
  }
  return out; …
Run Code Online (Sandbox Code Playgroud)

c++ oop enums operator-overloading

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

for循环中的赋值语句

以下代码是我编写的,用于测试我对使用for-loopin的理解,特别是在其中C使用赋值语句for-loop.但在这里我得到了意想不到的输出.为什么不分配0给前10个元素array? 如果我将数组声明为而不是?
为什么它根本不打印?谁能解释一下?arrayarray[10]array[11]

#include <stdio.h>

int main() {
  int i, array[11];  //array[10]
  for (i = 0; ((i < 10) || (array[i] = 0)); ++i);
  for (i = 0; ((i < 10) && (printf("%d\n", array[i]))); ++i);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

c c++ arrays printf for-loop

0
推荐指数
1
解决办法
1195
查看次数