网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
05月11日漏签0天
c语言吧 关注:798,985贴子:4,355,262
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 9回复贴,共1页
<<返回c语言吧
>0< 加载中...

%n的用法我没搞错吧,为什么总是零

  • 只看楼主
  • 收藏

  • 回复
  • 贴吧用户_5b3NVe2
  • 便当
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
int num;
printf(“gtyu %n”,&num);
printf(“%d”,num);
结果输出结果总是gtyu0.
大佬们谁知道,指点一下


  • 星之天仪
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
有些编译器不支持%n


科大讯飞股份有限公司
科大讯飞与尚硅谷联合打造的C语言精品课程,适合在校大学生及对C语言感兴趣的职场人士,技术深入浅出、内容实践性强,帮助掌握C语言语法,实现C语言程序编写。
2025-05-11 07:25广告
立即查看
2025-05-11 07:25:38
广告
  • stanchcorder6
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


  • GTA小鸡
  • 吧主
    14
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Windows系统一直以来沿用的C运行时库msvcrt编写于很早很早以前,由于历史原因它只支持C89,其中提供的printf函数实现不支持%n,%z,%t,读写long double等新特性。因此,使用了上述特性的代码链接到msvcrt无法正常工作。
微软在VS2015以后提供了一个全新的运行时库ucrt,它完全支持上述特性。使用最新的VS2022编写程序,并将程序链接到ucrt(这是默认行为),就可以正常运行上述代码。


  • stanchcorder6
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Windows平台上的mingw是支持%n的。编译时加上-D__USE_MINGW_ANSI_STDIO(不过最新版不需要加了,因为最新版默认定义这个宏)。


  • stanchcorder6
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
@GTA小鸡
1. printf中的%n格式说明是C89就有的。(GB/T 15272-1994等同采用ISO:IEC 9899-1990)

2. Windows使用的C运行时库支持printf函数的%n,但是使用微软自己的printf实现时,%n默认被微软强行禁用(使用MSVC编译时会出现Debug Assertion Failed),如果要启用,需要用一个微软自己的函数_set_printf_count_output。这里就是微软不符合标准的地方:标准中的非可选特性默认禁用,需要非标准函数启用。而MinGW的printf实现默认就是启用%n的,因为它的实现是遵守C标准的


  • stanchcorder6
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

%n并不是一个可选特性,默认不应禁用。但是微软自己的printf实现却需要一个微软自己的函数启用,而MinGW的实现就遵守C标准


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 9回复贴,共1页
<<返回c语言吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示