【发布时间】:2016-01-27 13:49:27
【问题描述】:
我尝试将零分配给名为列表的结构中的字段
list.ultimo = 0;
但是当我使用 printf 时
printf("%d", list.ultimo);
我得到结果
32766
但是当我添加时
unsigned short int cero = 0;
printf的结果是正确的,不管用cero。为什么?
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
我是新手,我现在很慢,很抱歉耽搁了
【问题讨论】:
-
你不觉得这些信息还不够吗?显示结构的定义以及
list的定义。 -
请不要告诉我
ultimo是未签名的,而您正在使用%d打印... -
@SouravGhosh 哈哈!你猜错了 - 这是一个无符号短片
-
@MartinJames 是的,我的错……我错过了标题……;)
-
您应该向我们展示更多代码来帮助您
标签: c printf unsigned short format-specifiers