C语言标准:从K&R到C23,全面解析C标准的演进与应用

C语言标准,ANSI C,ISO C,GNU C 丹尼斯·里奇(Dennis Ritchie)于1969年在 AT&T 贝尔实验室编写Unix 操作系统,实现该系统的程序语言就是C语言,因此里奇是C语言之父与UNIX之父,后面的Linux、Window、MAC OS都是基于UNIX进行开发的。 1、 K&R C标准 1978年,布莱恩·柯林汉(Brian Kernighan)和丹尼斯·里奇(Dennis Ritchie)出版了《The C Programming Language》这本书,作为C语言的非正式标准,称为K&a. 阅读详情

目录

引言

1. C语言标准的演进历程

2. K&R C(1978年)

2.1 特点

2.2 应用场景

3. ANSI C(C89/C90,1989年)

3.1 特点

3.2 应用场景

4. C99(1999年)

4.1 特点

4.2 应用场景

5. C11(2011年)

5.1 特点

5.2 应用场景

6. C17(2017年)

6.1 特点

6.2 应用场景

7. C23(2023年)

7.1 特点

7.2 应用场景

8. 总结


🌈你好呀!我是 程序猿

🌌 2025感谢你的陪伴与支持 ~

🚀 欢迎一起踏上探险之旅,挖掘无限可能,共同成长!


引言

        C语言自1972年诞生以来,经历了多次标准化过程。每一次标准的更新都带来了新的特性、改进和优化,使得C语言能够适应不断变化的编程需求。本文将详细罗列所有C语言标准,并深入探讨每个标准的特点、应用场景以及对C语言发展的影响。


1. C语言标准的演进历程

C语言的标准主要由以下几个版本组成:

  1. K&R C(1978年)

  2. ANSI C(C89/C90,1989年)

  3. C99(1999年)

  4. C11(2011年)

  5. C17(2017年)

  6. C23(2023年)

接下来,我们将逐一介绍这些标准的特点和应用场景。


2. K&R C(1978年)

2.1 特点

  • 非正式标准:K&R C并不是一个正式的标准,而是由丹尼斯·里奇(Dennis Ritchie)和布莱恩·柯尼汉(Brian Kernighan)在《C程序设计语言》一书中描述的C语言版本。

  • 基础语法:K&R C定义了C语言的基本语法和特性,包括变量声明、函数定义、控制结构等。

  • 缺乏标准化:由于没有统一的标准,不同编译器的实现存在差异,导致代码的可移植性较差。

2.2 应用场景

  • 早期UNIX开发:K&R C主要用于UNIX操作系统的开发和移植。

  • 教学与学习:作为C语言的起源,K&R C仍然是学习C语言历史的重要参考。


3. ANSI C(C89/C90,1989年)

3.1 特点

  • 首次标准化:ANSI C是C语言的第一个正式标准,由美国国家标准协会(ANSI)制定,后来被国际标准化组织(ISO)采纳为ISO/IEC 9899:1990,因此也称为C90。

  • 标准化语法:ANSI C统一了C语言的语法和库函数,提高了代码的可移植性。

  • 新增特性:引入了函数原型、void类型、const关键字等新特性。

3.2 应用场景

  • 跨平台开发:ANSI C的标准化使得C语言成为跨平台开发的首选语言。

  • 商业软件开发:许多商业软件和操作系统开始采用ANSI C进行开发。


4. C99(1999年)

4.1 特点

  • 现代化改进:C99标准引入了许多现代化特性,使得C语言更加适合现代编程需求。

  • 新特性:

    • 单行注释:支持//单行注释。

    • 变长数组:允许在栈上分配变长数组。

    • 布尔类型:引入了_Bool类型和stdbool.h头文件。

    • 复合字面量:允许在表达式中直接创建匿名结构体或数组。

    • 内联函数:支持inline关键字,用于定义内联函数。

4.2 应用场景

  • 科学计算:C99的变长数组和内联函数特性使其在科学计算领域得到广泛应用。

  • 嵌入式系统:C99的现代化特性使得其在嵌入式系统开发中更加高效。


5. C11(2011年)

5.1 特点

  • 多线程支持:C11引入了多线程支持,包括<threads.h>头文件和原子操作支持。

  • 新特性:

    • 泛型编程:引入了_Generic关键字,支持泛型编程。

    • 匿名结构体和联合体:允许在结构体和联合体中定义匿名成员。

    • 边界检查函数:引入了<stdbounds.h>头文件,用于边界检查。

5.2 应用场景

  • 并发编程:C11的多线程支持使其在并发编程领域得到广泛应用。

  • 高性能计算:C11的泛型编程和原子操作特性使其在高性能计算中更加高效。


6. C17(2017年)

6.1 特点

  • 小幅度更新:C17主要是对C11的小幅度更新和修正,没有引入重大新特性。

  • 错误修复:修复了C11标准中的一些错误和不明确之处。

  • 兼容性:C17完全兼容C11,确保了代码的向后兼容性。

6.2 应用场景

  • 稳定开发:C17适用于需要稳定性和兼容性的项目。

  • 嵌入式系统:C17的稳定性和兼容性使其在嵌入式系统开发中仍然具有重要地位。


7. C23(2023年)

7.1 特点

  • 现代化改进:C23标准进一步现代化了C语言,引入了许多新特性。

  • 新特性:

    • 属性语法:引入了[[attributes]]语法,用于指定函数或变量的属性。

    • 改进的泛型支持:增强了_Generic关键字的支持。

    • 新的库函数:引入了许多新的库函数,如strdup、strndup等。

7.2 应用场景

  • 现代软件开发:C23的现代化特性使其在现代软件开发中更加高效。

  • 高性能计算:C23的改进泛型支持和新的库函数使其在高性能计算领域具有更大潜力。


8. 总结

        C语言标准的每一次更新都带来了新的特性和改进,使得C语言能够适应不断变化的编程需求。从K&R C到C23,C语言经历了从非正式标准到现代化编程语言的演进过程。无论是操作系统、嵌入式系统,还是高性能计算,C语言都以其高效性、底层控制能力和广泛的应用领域,继续在计算机科学领域占据重要地位。


        最后,希望通过这篇文章,你能更好地理解C语言标准的演进历程及其应用场景。无论你是初学者还是资深开发者,掌握C语言的标准和特性都将为你的编程生涯打下坚实的基础。


  ​期待批评指正,共同进步~

从K&R到C23:矩阵乘法代码的现代化改造之路 C语言作为系统级编程的基石,其标准历经K&R、C99到C23的演进,反映了计算机体系结构和编程范式的变革。编译器优化技术从早期的register关键字提示发展到现代的自动向量化,通过restrict限定符和SIMD指令实现性能飞跃。在数值计算领域,矩阵乘法这类基础算法既考验语言特性掌握程度,又体现硬件架构认知深度。通过分析一段2003年的遗留代码,可以清晰看到从K&R风格函数声明到现代C标准的迁移路径,以及内存对齐、多线程等工程实践要点的演进。代码现代化过程中,现代编译器对朴素算法的自动优化能力往往超出预期 阅读详情

相关推荐

C、Java与Python:三大编程语言的核心差异与应用场景

编程语言作为软件开发的基础工具,其设计哲学与实现原理直接影响工程实践效果。静态编译型语言如C通过直接操作内存和硬件资源,在系统编程和嵌入式领域保持不可替代的地位;Java凭借JVM虚拟机和强大的类型系统,构建了企业级应用的标准生态;Python则以动态特性和丰富的库支持,成为数据科学与快速开发的首选。理解内存管理机制(如GC与手动管理)、类型系统(静态/动态)和并发模型(线程/协程)等核心概念,能帮助开发者根据性能需求、团队协作和项目规模等因素,合理选择技术栈。在微服务、物联网和AI等现代技术场景中,这三种

weixin_30254435的博客 375

关于编译的重要概念总结

GNU 是一个计划或者叫运动。在这个旗帜下成立了 FSF,起草了 GPL 等。GNU操作系统是一种由自由软件构成的类 Unix 操作系统,该系统基于 Linux 内核,目标在于建立一个完全相容于UNIX的自由软件环境。当时Unix 系统开始收费和商业闭源了。针对这一现象,Richard Stallman发起了 GNU 计划,模仿 Unix 的界面和使用方式,从头做一个开源的版本。他自己做了编辑器 Emacs 和编译器 GCC。接下来开发者实现了包括核心的 gcc 和 glibc。

timerring的博客 8万+

C++初步认识

C自定义类型为结构体,定义结构体变量时,需加关键字struct。C++自定义类型为类,创建类的实例时,不需要加关键字class。

shijiyingjie的博客 5502

51c~C语言~合集1

C 语言把文件看作是一个字符(字节)的序列,即由一个一个字符(字节)的数据顺序组成。根据数据的组织形式,可分为 ASCⅡ 文件和二进制文件。文件的操作包括:文件的打开、文件的关闭、文件的读写操作、文件状态检查以及文件的定位等。1 文件的打开1.1 函数原型1.2 功能说明按照 mode 规定的方式,打开由 pname指定的文件。此时如 mode 规定按写方式打开文件,就按由pname 指定的名字建立一个新文件;此时如 mode 规定按读方式打开文件,就会产生一个错误;

whaosoft~aiotの开发板商城 1万+

C语言的未来:C23标准的崭新篇章

在编程语言的浩瀚星空中,C语言无疑是一颗璀璨的恒星。自1972年诞生以来,它以其简洁、高效的特性,成为无数程序员的心头好。从操作系统到嵌入式设备,C语言的身影无处不在。而如今,C语言迎来了它的最新标准——C23(ISO/IEC 9899:2024)。这次更新不仅是一次技术上的革新,更是对现代编程需求的深刻回应。C语言的标准化始于1989年(C89),随后经历了多次更新:C99、C11、C17(也称C18),直到今天的C23。每一次标准的发布,都为C语言注入了新的活力。C23的制定始于2016年,最初被称为C

步子哥的博客 4372

给STM32供电,别只接VDD和GND!VBAT、VDDA这些引脚不接会怎样?

本文深入解析STM32电源设计中VBAT与VDDA引脚的关键作用,揭示仅连接VDD和GND可能导致的ADC精度下降、RTC功能异常等问题。通过实测数据对比不同连接方案,提供包括滤波电路设计、PCB布局布线和双电源自动切换在内的实用解决方案,帮助开发者优化系统稳定性与性能。

weixin_30521161的博客 623

1 C 语言核心认知与全景导读:程序本质、语言演变、核心优势、发展历程、标准版本、应用场景

本文深度解析程序运行的底层机制与语言演进逻辑,全景梳理 C 语言从 Unix 诞生到 C23 标准化的技术脉络。文章结合 TIOBE 数据剖析其在操作系统、嵌入式及高性能计算领域的核心统治力,详解可移植性与底层控制等六大优势,助你透彻理解 C 语言作为现代软件工业基石的隐形价值与应用边界。

大模型全栈工程师 · Thanks_ks 2748

施耐德EcoStruxure平台深度体验:IEC 61499在智慧物流中心的真实应用案例解析

本文深度解析施耐德EcoStruxure平台在智慧物流中心的应用,重点探讨IEC 61499标准如何通过分布式控制和功能块技术重构自动化逻辑。通过上海某物流中心的真实案例,展示了该平台在提升系统弹性、降低停机成本方面的显著成效,为工业自动化转型提供实践参考。

weixin_30576827的博客 66

2024年C语言标准演进:从K&R到C23的关键特性解析

本文深入解析了C语言从K&R到C23的标准演进历程,重点介绍了各版本的关键特性及其实际应用场景。从K&R C的基础语法到C99的现代化改造,再到C11的多线程支持和C23的语法增强,文章通过代码示例展示了C语言版本迭代如何提升开发效率和安全性,为开发者选择合适版本提供实用建议。

weixin_30745553的博客 404

《电磁兼容设计》专栏说明

本专栏自2024年1月起开始更新,仅设此一个电磁兼容相关知识专栏,并将一直持续更新下去,无期限

linkking27的博客 791

车载以太网网络测试-27【SOME/IP-SD简述】

SOME/IP-SD协议是基于IP的可扩展面向服务中间件中的服务发现协议,是汽车电子和嵌入式系统中实现动态服务发现与通信的核心组件。该协议规范详细说明了协议SOME/IP服务发现(SOME/IP-SD)的格式、消息序列和语义。本文将对SOME/IP-SD协议进行详细介绍。

车载网络测试工程师的博客 1956

[ C语言 ] 发展历程与实践标准

本文梳理了C语言从诞生到标准化的演进历程,重点分析了其与Unix系统的共生关系及对现代计算的基础性影响。丹尼斯·里奇为解决Unix移植性问题而设计的C语言,通过标准化进程(C89/C90、C99、C11、C17/C18)逐步完善,解决了代码兼容性、多线程支持等关键问题。C语言的高效性与可移植性使其成为操作系统、嵌入式系统等底层开发的核心工具,其设计理念深刻影响了后续编程语言的发展。尽管面临新语言的竞争,C语言在性能敏感领域仍保持不可替代的地位,其标准化进程也体现了工业界对稳定性的重视。

A41311141的博客 732

FPGA实现LVDS接口(1)--IBUFDS原语、OBUFDS原语和IOBUFDS原语的介绍及使用(仿真/源码)

通过本文您会学到:Xinlix的源语IBUFDS、OBUFDS和IOBUFDS是什么?

孤独的单刀 2万+

C语言版本演进全解析:从K&R到C23的关键变化与工程选型指南

在日常编程开发中,编程语言的标准与实现版本常常令人困惑,而C语言作为最基础的系统级语言,其标准演进更是被许多开发者误解。理解语言标准、编译器实现与方言扩展的区别,是掌握C语言版本问题的核心前提。从K&R时代的无标准状态,到C89奠定现代语法骨架,再到C99引入stdint.h、变长数组等革命性特性,以及C11的原子操作与C23的现代化尝试,每一次版本升级都深刻影响着嵌入式开发、跨平台移植与高性能计算的工程实践。面向实际项目,如何根据目标编译器与平台约束,在C89、C17或C23之间做出合理选型,并规避未定义

weixin_31421613的博客 154

YOLOv11涨点改进| CVPR 2026 | 全网独家首发、特征融合改进篇| 引入SRFusion 空间细化多级融合,含多种创新融合改进,涨点可直接发论文,适合裂缝图像检测,小目标检测任务高效涨点

🔥本文提出SRFusion空间细化多级融合模块,用于改进YOLOv11网络模型。该模块通过高分辨率特征引导低分辨率语义特征的融合,利用空间注意力机制对上采样后的特征进行加权细化,增强多尺度特征间的空间细节交互。SRFusion模块能够提升模型对目标区域的表达能力,有效改善小目标、密集目标及复杂背景场景下的检测效果,同时保持YOLOv11的高效性与实时检测性能。文章详细介绍了模块结构、实现原理、核心代码及在YOLOv11中的三种配置方法,为模型优化提供了创新解决方案。

Ai缝合怪、助力小伙伴高效发论文 148

OpenStack 2018 年终盘点

目录 文章目录目录前言OpenStack 一年来的成长NovaCinderNeutronIronicCyborgOctaviaKollaMagnumZunKuryr从 OpenStack 到 OpenInfra 前言 这是最好的时代,也是最坏的时代 — — 查尔斯·约翰·赫芬姆·狄更斯《双城记》 年关将至,闲暇之余,回顾我与 OpenStack 的 2018。 NOTE:仅作为个人见解,与公...

烟云的计算 3596

C语言版本迭代全解析:从K&R到C23,这些新特性你用过几个?

本文全面解析了C语言从K&R到最新C23标准的版本迭代历程,重点剖析了C99、C11、C17/C18及C23等关键版本引入的核心新特性。文章深入探讨了混合声明、单行注释、指定初始化器、原子操作、线程支持等特性如何提升代码的安全性、表达力与并发性能,并提供了在实际项目中评估编译器支持与渐进式应用这些新特性的实用策略。

k9l0m1的博客 465

Cleo Synchronization接口任意文件读取漏洞CVE-2024-50623 附POC

微信公众号搜索:南风漏洞复现文库该文章 南风漏洞复现文库 公众号首发Cleo。

nnn2188185的博客 480

C语言学习文档(五)

本文梳理了C语言标准的最新演进路径,并展望了其在WebAssembly、嵌入式物联网及多语言混合编程等跨领域的生态融合与未来发展方向。

2401_83227843的博客 466

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

C语言学习(一)——C语言简介

C 语言是一种通用的高级语言,最初是由丹尼斯·里奇在贝尔实验室为开发 UNIX 操作系统而设计的。C 语言最开始是于 1972 年在DEC PDP-11计算机上被首次实现。C 语言是以 B 语言为基础的,B 语言大概是在 1970 年被引进的。在 1978 年,布莱恩·柯林汉(Brian Kernighan)和丹尼斯·里奇(Dennis Ritchie)制作了C的第一个公开可用的描述,现在被称为 K&R 标准。C语言是一门通用计算机编程语言,泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式。

fyflalala的博客 812

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

c语言学习前言(翁凯)

标准版:1.:贝尔实验室的Ken Thompson(肯.汤姆森)等人开发Unix操作系统(最初用汇编语言)。:Thompson在BCPL语言基础上简化,创造了B语言(无类型,适合早期小型机)。但B语言功能有限,无法充分利用新型硬件(如PDP-11)。:Dennis Ritchie在B语言的基础上,于1972年左右设计了C语言。核心创新是引入了(如charint等)和更丰富的结构,使其既能进行高级控制,又能进行底层内存操作。2.

F_IRE_的博客 651

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

C语言开发从入门到精通:C语言的起源与核心价值

C语言50年生命力解析(2026视角) 摘要:C语言自1972年诞生至今仍是系统级开发的核心语言。其核心价值在于:1)接近硬件的极致控制力(OS内核/嵌入式开发必备);2)性能天花板特性(高频交易/游戏引擎首选);3)最小运行时开销(IoT/MCU关键优势)。2026年C语言在操作系统、嵌入式、高性能计算领域仍不可替代,尤其适合追求底层技术穿透力的开发者。学习建议:嵌入式方向应精通C+RTOS,高性能计算需掌握C+SIMD优化。尽管Rust等新兴语言崛起,C语言"信任程序员"的哲学使其持

likuolei的博客 857

C语言学习知识点总结01

首先编写代码生成源文件→然后通过预处理对源文件的多余注释和空格,然后处理预处理的指令将.c文件生成.i文件→之后通过编译器编译生成汇编文件.s→之后在进行汇编变成目标文件也就二进制文件.obj文件→最后通过链接目标文件和库文件生成可执行的程序文件.exe。(在vscode中右击创建的.c文件选中在集成终端打开在终端中输入如下命令,输入完命令,按回车键运行。在终端中输入如下命令,输入完命令,按回车键运行。在终端中输入如下命令,输入完命令,按回车键运行。在终端中输入如下命令,输入完命令,按回车键运行。

cookie_ls的博客 469

20_02_19笔记——《你必须知道的495个C语言问题》

《你必须知道的495个C语言问题》笔记 第11章 ANSI/ISO C 11.1 什么是“ANSI C”? a: 1978年,《C程序设计语言》的第一版出版,书中介绍的C语言标准也被称作“K&R C” 1989年,美国国家标准协会(ANSI)创立了一套C的标准,即ANSI C,或C89。1990年,将C89稍微改动,变成了ISO C或叫做C90。 2000年,ANSI 发布新的C标准C99...

please_fix_的博客 289

C与C++中字符常量类型差异解析

字符常量在编程语言中是基础数据类型之一,其类型定义直接影响内存布局和运算行为。C语言基于历史原因将字符常量视为int类型,而C++则严格定义为char类型,这种差异源于两种语言不同的类型系统设计理念。理解这一原理对处理跨语言项目、内存计算和二进制兼容性至关重要。在实际工程中,这种类型差异可能导致结构体大小计算错误、模板实例化问题等隐患。通过显式类型转换、静态断言等技术手段,开发者可以规避由此引发的内存越界等严重问题。本文通过sizeof('a')的典型案例,深入分析C/C++类型系统的关键区别及其对现代软件

weixin_34161083的博客 328
上一篇: 选择C语言的理由:为什么C语言仍然是编程世界的基石?
下一篇: 使用C语言的7个步骤:从定义目标到维护代码
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿!=程序员

感谢来过,感谢有你!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值