jjzjj

c++ - C++ 中的 fprintf 和 vfprintf 有什么区别?

这个问题不太可能帮助任何future的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visitthehelpcenter.关闭9年前。我无法找到以下问题的答案,而且我有一些与功能相关的问题。我的主要编程是用C#完成的,在学习的时候并没有真正学过C++,但在我现在的工作中我也必须做一些C++编程。大部分C++编程都是由一位前雇员完成的,他制作了一个日志记录功能。偶尔这个函数会导致错误(访问冲突)——这不会向用户显示,但我在通过调试器运行代码时看到了它。当错误发生时它指向这行代码:vfpri

c++ - 指向同一地址的指针彼此不同

我最近对指针感到好奇,但我无法理解为什么以下内容不起作用。我的想法是创建一个变量,比如它的地址(十进制),要求用户将其输入回去并将其作为指向前一个变量的指针的地址。最后两个变量应该具有相同的值。据推测,最后一个指针指向一个错误的内存地址,因为它会出现段错误,但是当我打印指针的地址时,它们是相同的!#includeintmain(){inttemp=0;printf("Temporaryintegeraddr0x%x(dec%d)\n",&temp,&temp);intinput=-1;printf("Givemeanaddresstoread(indec)\n");std::cin>>

c++ - 为什么 `(a--> 0)` 和 `((a--) > 0)` 相同?

程序如下main(){inta=1;if(a-->0)printf("AAAA");elseprintf("BBBB");}它的输出是AAAA如果我使用main(){inta=1;if((a--)>0)printf("AAAA");elseprintf("BBBB");}那为什么输出又是AAAA。()比--更受欢迎。 最佳答案 后缀运算符--有higherprecedence比任何bool比较运算符。您到底期望什么?a--始终计算为a的值,该值在计算后递减。 关于c++-为什么`(a--

c++ - 奇怪的 printf 行为

std::vectorv;for(size_ti=init;i输出:4095000我不明白为什么这个printf会这样?init或pageSize都不为0。我知道%d对unsignedlonglong无效,但令我困扰的是当参数的顺序改变时printf的行为改变。 最佳答案 NeitherinitorpageSizeis0.%d也不是适合64位值的格式字符串说明符,我敢打赌:-)很有可能,您需要使用%ld(如果您的longs是64位)或%lld(如果您的longlongs是64位)或来自最新C标准的固定宽度说明符宏,我永远无法记住它们

c++ - printf 如何知道格式参数的长度?

intprintf(constchar*format,...);这是printf的签名。我不明白的是,printf如何知道第一个参数的长度(constchar*格式)。它知道起点(因为它是一个指针,我明白了),但指针没有终点或其他东西。通常当你想打印一些东西时,你必须给出一个长度(例如,Linux的sys_write)那么printf是怎么知道的呢?编辑:我仔细查看了我在ASM中编写的代码,我认为它只是查找\0字符。对吗? 最佳答案 它是一个以null结尾的字符串(就像C中的所有字符串一样),所以第一个ASCIINUL('\0'或普

c++ - uint_fast16_t 的 sprintf 格式?

我对uint_fast16_t的格式有疑问uint_fast16_trunningOrderNo;std::stringATNativeConnector::_GetNextClOrdId(){time_tt=time(NULL);structtm*tim=localtime(&t);std::stringstreamsstr;chartemp[10];sprintf(temp,"%02d%02d%02d%03u",tim->tm_hour,tim->tm_min,tim->tm_sec,++runningOrderNo);sstrtm_hourtm_mintm_sectm_sec我收

c++ - 为什么打印语句会改变指针的值?

我写了一个这样的c++代码:#includeusingnamespacestd;intmain(){inti=2;inti2=0;void*pi=&i-1;cout输出是:bycout-thevalueof*piis:0byprintf-thevalueof*piis:0theaddressofpiis:0029fe94theaddressofi2is:0029fe94thevalueofi2is:0现在,如果我删除将打印地址的语句。#includeusingnamespacestd;intmain(){inti=2;inti2=0;void*pi=&i-1;cout现在的输出是:by

c++ - printf 的格式化缓冲区在哪里?

我在一个受限的嵌入式系统上工作。目前我们使用snprintf到缓冲区,然后用另一个语句,将缓冲区打印到串口:chartemp_buffer[256];intbytes_written=snprintf(temp_buffer,sizeof(temp_buffer),"Solarsystemhas%dplanets\n",10);if(bytes_written>0){Serial_Port_Output(temp_buffer,bytes_written);}我想切换到printf直接写入串口。根据我们的编译器文档,我拦截了用于输出数据以使用串行端口的函数调用。(该接口(interfa

c++ - 为什么 "%I64d"在同一格式字符串中多次使用时会给出奇怪的输出?

当我在codeforces上解决一个编程问题时,我发现当格式说明符“%I64d”在同一格式字符串中被多次使用时,例如:longlonginta,b,c;a=1,b=3,c=5;printf("%I64d%I64d%I64d\n",a,b,c);输出是103然而,当我将每个说明符分开时,例如:longlonginta,b,c;a=1,b=3,c=5;printf("%I64d",a);printf("%I64d",b);printf("%I64d",c);puts("");输出如预期的那样:135这是查看上述代码片段的ideone链接:http://ideone.com/f2udRB请帮

c++ - C++ printf 函数中的参数化前导零

我的问题很简单。我想使用printf打印具有指定数量的前导零的整数。然而,前导零的数量是运行时决定的,不是先验的。我怎么能那样做?如果我知道字符数(比方说5),那就是printf("%05d",number);但我不知道会不会是5。 最佳答案 您可以使用*传递宽度:printf("%0*d",5,number); 关于c++-C++printf函数中的参数化前导零,我们在StackOverflow上找到一个类似的问题: https://stackoverflo