Turbo C++ 中的日期结构
date structure in turbo c++
我被要求在库函数getdate的帮助下编写一个程序来显示系统的当前日期,getdate用系统的当前日期填充日期结构*datep。
Turbo c++中预定义的日期结构如下图
struct date {
int da_year; /*current year */
char da_day; /* day of the month */
char da_mon; /* month (1=Jan) */
};
函数 getdate 在头文件 DOS.H 中有如下声明。
void gatdate(struct date *datep);
由于getdate在日期结构体*datep中填入系统当前日期,我需要做一个struct date类型的结构体变量,调用getdate函数,将变量地址作为实参传给getdate ,此后显示这个结构变量的值应该给我们系统的当前日期。
结构日期有字符变量da_day作为它的成员之一来存储系统当前日期的日期。
我的问题是如何存储天数(从
字符变量中月份的 1-28/29/30/31 通常)?
另外,按照下面的方式打印结构变量的值
没有正确给出系统的当前日期。
printf("year/day/month is %d/%c/%c",a.da_year,da_day,da_mon); /* a is the structure variable of the type struct date */
而下面的陈述给出了正确的日期。
printf("year/day/month is %d/%d/%d",a.da_year,da_day,da_mon);
为什么会这样?
Here my question is how is it possible to store days(from 1-28/29/30/31 usually) of the month in a character variable?
一个char
变量,有符号或无符号,都可以很容易地保存一个"value",范围在0
到31
(十进制值,迂腐)之间,是用作日期.
Also,printing the value of the structure variable the way below
doesn't gives system's current date correctly.
是的,因为您没有打印 decimal 值,您正在尝试打印不期望的相应字符表示。我们只对那里的十进制值感兴趣,因此 %d
将是预期的转换说明符。
详细说明,对于像 printf()
这样的可变参数函数,提供的参数经过 默认参数提升 注意 ,这使得提供 char
以提升为 int
,这非常适合 %d
转换说明符。
也相关,引用 C11
,章节 §7.21.6.1,
d,i
The int
argument is converted to signed decimal in the style [−]dddd. [....]
c
If no l
length modifier is present, the int
argument is converted to an
unsigned char
, and the resulting character is written. [....]
注:
引用 C11
,章节 §6.5.2.2
[....] The ellipsis notation in a function prototype declarator causes
argument type conversion to stop after the last declared parameter. The default argument
promotions are performed on trailing arguments.
我被要求在库函数getdate的帮助下编写一个程序来显示系统的当前日期,getdate用系统的当前日期填充日期结构*datep。 Turbo c++中预定义的日期结构如下图
struct date {
int da_year; /*current year */
char da_day; /* day of the month */
char da_mon; /* month (1=Jan) */
};
函数 getdate 在头文件 DOS.H 中有如下声明。
void gatdate(struct date *datep);
由于getdate在日期结构体*datep中填入系统当前日期,我需要做一个struct date类型的结构体变量,调用getdate函数,将变量地址作为实参传给getdate ,此后显示这个结构变量的值应该给我们系统的当前日期。 结构日期有字符变量da_day作为它的成员之一来存储系统当前日期的日期。
我的问题是如何存储天数(从 字符变量中月份的 1-28/29/30/31 通常)?
另外,按照下面的方式打印结构变量的值
没有正确给出系统的当前日期。printf("year/day/month is %d/%c/%c",a.da_year,da_day,da_mon); /* a is the structure variable of the type struct date */
而下面的陈述给出了正确的日期。
printf("year/day/month is %d/%d/%d",a.da_year,da_day,da_mon);
为什么会这样?
Here my question is how is it possible to store days(from 1-28/29/30/31 usually) of the month in a character variable?
一个char
变量,有符号或无符号,都可以很容易地保存一个"value",范围在0
到31
(十进制值,迂腐)之间,是用作日期.
Also,printing the value of the structure variable the way below doesn't gives system's current date correctly.
是的,因为您没有打印 decimal 值,您正在尝试打印不期望的相应字符表示。我们只对那里的十进制值感兴趣,因此 %d
将是预期的转换说明符。
详细说明,对于像 printf()
这样的可变参数函数,提供的参数经过 默认参数提升 注意 ,这使得提供 char
以提升为 int
,这非常适合 %d
转换说明符。
也相关,引用 C11
,章节 §7.21.6.1,
d,i
The
int
argument is converted to signed decimal in the style [−]dddd. [....]
c
If no
l
length modifier is present, theint
argument is converted to anunsigned char
, and the resulting character is written. [....]
注:
引用 C11
,章节 §6.5.2.2
[....] The ellipsis notation in a function prototype declarator causes argument type conversion to stop after the last declared parameter. The default argument promotions are performed on trailing arguments.