如果AErrorCode是ERR_NO_HEADER_RECORD_FOUND_ON_FILE,那么下面的过程中Field.Format(“%04d”,ErrorCode)的值是多少?
.h文件中的某处:
enum AErrorCode
{
ERR_UNKNOWN_RECORD_TYPE_CODE = 5001,
ERR_NO_HEADER_RECORD_FOUND_ON_FILE,
ERR_DUPLICATE_HEADER_RECORD_FOUND,
ERR_THIRD_PARTY_LETTER_RECORD_HAS_A_ZERO_REFERRAL_AMOUNT = 5101,
ERR_CALL_OCA_UNKNOWN_PROBLEM = 5999
};
在某些程序中:
void TADataset::SetErrorStatus(AErrorCode ErrorCode)
{
NDataString Field;
Field.Format("%04d", ErrorCode);
AckRecord.SetField("oca_error_stat", "E");
AckRecord.SetField("error_cd", Field);
}
答案 0 :(得分:4)
ERR_NO_HEADER_RECORD_FOUND_ON_FILE == 5002
如果您根本没有指定任何值,则从0
开始,并递增enum
中的下一个元素。如果指定一个值,则它将从下一个元素开始递增。除非通过为后继元素指定另一个值来再次重置计数器。
答案 1 :(得分:2)
根据C ++标准7.2 / 1:
< ...>如果第一个枚举器没有初始化器,则相应常量的值为零。 没有初始值设定项的枚举器定义为枚举数提供了通过将前一个枚举数的值增加1而获得的值。
这意味着ERR_NO_HEADER_RECORD_FOUND_ON_FILE
等于ERR_UNKNOWN_RECORD_TYPE_CODE+1
。