gpt4 book ai didi

c - 在c中的无符号短整型中分配零

转载 作者:行者123 更新时间:2023-11-30 18:38:05 25 4
gpt4 key购买 nike

我尝试将零分配给名为列表的结构中的字段

list.ultimo = 0;

但是当我使用 printf

printf("%d", list.ultimo);

我得到了结果

32766

但是当我添加时

unsigned short int cero = 0;

无论不使用cero,printf的结果都是正确的。为什么?

lista.h

#ifndef LISTA_H
#define LISTA_H

typedef struct{
elemento lista[TAMANOMAX];
unsigned short int ultimo;
}LISTA;

void Insertar(elemento, unsigned short int posicion, LISTA);
#endif

lista.c

#include<stdio.h>

typedef short int elemento;
#ifndef TAMANOMAX
#define TAMANOMAX 10
#endif
#include"lista.h"

void Insertar(elemento x, unsigned short int p, LISTA lista){
if (lista.ultimo >= TAMANOMAX){
puts("full list");
printf("%hu",lista.ultimo);
}
}

main.c

#include<stdio.h>

typedef unsigned short int elemento;
#define TAMANOMAX 4
#include"lista.h"

int main(){
LISTA esferas;
esferas.ultimo = 0;
Insertar(2,0,esferas);
printf("\n%hu\n", esferas.ultimo);
return 0;
}

结果是

$gcc -Wall lista.c main.c

full list

32765

0

我是新手,现在速度很慢,很抱歉延迟了

最佳答案

使用%hd打印short int,使用%hu打印unsigned Short int%d 代表 int

编辑:现在您已经发布了完整的代码,看来 TAMANOMAXlista.c 中设置为 10,但设置到 main.c 中的 4,导致 main() 函数与 Insertar 函数之间不兼容。所有文件中应该具有相同的值。如果您想使用不同的数组长度,请在 LISTA 结构中添加 length 成员。但是 TAMANOMAX 在任何地方都应该绝对相同,否则您实际上正在使用不同的数据类型,并且您的程序将无法运行。

关于c - 在c中的无符号短整型中分配零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35039168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com