Questions tagged «c»

C是用于操作系统,游戏和其他高性能工作的通用计算机编程语言。

22
学习成为一名优秀(优秀)程序员的必备条件是学习如何使用C(或C ++)吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 当我第一次开始学习如何编程时,真正的程序员可以在睡眠中编写汇编。计算机科学方面的任何认真教育都将包括大量使用汇编进行编程的培训和实践。从那以后,情况发生了变化,以至于我看到带有汇编的计算机科学学位(如果有的话)被降级为一项任务和一章,从四年制学习中总共进行了两周的工作。 C / C ++编程似乎遵循了类似的路径。采访那些花了不超过两周的C ++编程并且只在某本书中读过C的大学毕业生,我不再感到惊讶。虽然最严重的CS学位似乎仍包括大量的时间学习和使用其中一种或两种语言,但显然趋势是学校中C / C ++的执行较少。 显然,无需阅读或编写任何C或C ++代码行就能从事出色的工作。 考虑到所有这些,学习这两种语言值得吗?他们是否必须要出类拔萃?(除了显而易见的,非语言的建议,例如“语言的选择对于全面的教育可能很重要”,以及“在程序员的整个职业生涯中不断尝试和学习新语言可能是一个好主意,伸展灰色细胞”)

4
与将字符串连接在一起并一次调用相比,经常调用println()有多糟糕?
该问题是从Code Review Stack Exchange 迁移而来的,因为可以在Software Engineering Stack Exchange上回答。 迁移 5年前。 我知道输出到控制台是一项昂贵的操作。出于代码可读性的考虑,有时最好调用一个函数两次输出文本,而不是将一长串文本作为参数。 例如,效率降低多少 System.out.println("Good morning."); System.out.println("Please enter your name"); 与 System.out.println("Good morning.\nPlease enter your name"); 在该示例中,区别仅在于一个呼叫,println()如果更多,该怎么办? 与此相关的是,如果要打印的文本很长,则在查看源代码时,涉及打印文本的语句可能看起来很奇怪。假设文本本身不能简短,该怎么办?是否应该出现多次println()通话的情况?曾经有人告诉我,代码行不应超过80个字符(IIRC),那么您将如何处理 System.out.println("Good morning everyone. I am here today to present you with a very, very lengthy sentence in order to prove a point about how …
23 java  c++  performance  c  io 

6
如何解决嵌套评论的问题
不能嵌套注释的语言不只是一种。您对此问题有很好的解决方案吗?在C / C ++和Java中,一种解决方法是仅使用单行注释,但是注释掉较大的块将变得不可能。我正面临着这样的事情: </li><!-- <li><!-- Save --> 因此,我必须手动浏览并编辑评论。您能以多种语言建议我们应该如何处理吗?我不确定,但是python '''可能为此提供了解决方案,可以#在python中添加注释?`
23 java  c++  python  c  comments 

5
为什么几种流行的编程语言会受到C的影响?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 根据TIOBE索引,排名前10位的编程语言似乎受C的影响很大: 1. Java 该语言的大部分语法源自C和C ++,但具有更简单的对象模型和更少的低级功能。- wikipedia.org 2. C C是有史以来使用最广泛的编程语言之一,很少有计算机体系结构不存在C编译器。- wikipedia.org 3. C# 在.NET Framework的开发过程中,类库最初是使用称为简单托管C(SMC)的托管代码编译器系统编写的。1999年1月,安德斯·海斯伯格(Anders Hejlsberg)组建了一个团队,以建立当时称为Cool的新语言,该语言代表“类似C的面向对象语言”。- wikipedia.org 4. C ++ 它由Bjarne Stroustrup于1979年在贝尔实验室开始开发,是对C语言的增强。- wikipedia.org 5. Objective-C Objective-C是一种反射式的,面向对象的编程语言,它将Smalltalk样式的消息传递添加到C编程语言中。- wikipedia.org 6. PHP 他将这些脚本重写为C编程语言通用网关接口(CGI)二进制文件,对其进行了扩展以增加使用Web表单以及与数据库进行通信的能力,并将其称为“个人主页/表单解释器”或PHP / FI。- wikipedia.org 8. Python Python是在1980年代后期构思的,它的实现是1989年12月由荷兰CWI的Guido van Rossum开始的,它是ABC编程语言(其本身受SETL启发)的继承者,该语言能够进行异常处理并与Amoeba操作系统进行接口。- wikipedia.org ABC(编程语言)它的设计师声称ABC程序通常大约是等效Pascal或C程序的四分之一,并且更具可读性。- wikipedia.org 9. Perl Perl借鉴了其他编程语言的功能,包括C,shell脚本(sh),AWK和sed。- wikipedia.org 10. JavaScript JavaScript使用受C语言影响的语法-wikipedia.org 看来大多数人都从C借用了他们的语法和/或至少在开始时就受到了其他几种方式的严重影响。为什么?

9
为什么这么难使C不那么容易发生缓冲区溢出?
我正在大学上一门课程,其中一个实验室是对它们提供给我们的代码执行缓冲区溢出攻击。范围从简单的漏洞利用到改变堆栈上某个函数的返回地址以返回到另一个函数,一直到更改程序寄存器/内存状态然后返回到您调用的函数的代码,这意味着您调用的函数完全不会利用该漏洞。 我对此进行了一些研究,并且即使在现在,此类漏洞利用仍在很多地方使用,例如在Wii上运行自制程序以及iOS 4.3.1不受限制的越狱行为。 我的问题是为什么这个问题很难解决?显然,这是用于黑客攻击数百件事情的主要漏洞,但似乎很容易解决,只需截断超出允许长度的任何输入,然后对所有输入进行清理即可。 编辑:我想从另一个角度考虑问题-为什么C的创建者不通过重新实现库来解决这些问题?

3
为什么C ++在编程竞赛和竞赛中占主导地位?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 我知道C ++是一种非常快速的语言,但是C会不会变得如此快,或者在某些情况下会更快? 然后您可能会说C ++具有OOP,但是大多数编程难题所需要的OOP数量并不多,我认为C可以处理。 这就是我问这个问题的原因:我对编程竞赛和竞赛非常感兴趣,并且我习惯于用C进行编码。但是,我注意到绝大多数人都使用C ++(例如,在Google Code Jam 2011的25个决赛入围者中有17个使用了C ++,而没有人使用C),所以我想知道我在使用C方面是否处于不利地位。 除了对象定向之外,是什么使C ++更适合编程竞赛的语言?为了在比赛中表现更好,我应该学习和使用哪种语言的功能? 对于背景知识,我认为自己非常精通C,但是我才刚刚开始学习C ++。
23 c++  c 

5
C编译器的历史是什么?
此问题是从Stack Overflow 迁移而来的,因为可以在Software Engineering Stack Exchange上回答。 迁移 8年前。 当我们说“ Dennis Ritchie开发了C语言”时,是否表示他已经创建了一个编译器(使用“已经”开发的其他语言)来编译用C语言编写的源代码?如果是,他用来编写第一个C编译器的语言是什么?我知道编译器是一个程序,我们可以使用当前可用的C编译器为C语言创建另一个编译器。那是对的吗?
23 c  compiler 

16
如果我不懂C但我对C ++满意,可以吗?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 此问题是从Stack Overflow 迁移而来的,因为可以在Software Engineering Stack Exchange上回答。 迁移 8年前。 我有一个问题,我认为可以在这里得到最好的回答。 我非常擅长C++,就像我对语言感到满意一样,我已经阅读Accelerated C++并完成了几乎所有的练习。 但是,我有一个大问题。我需要学习C吗?C我一生中从未做过。我刚开始C++编程时才刚开始。可能是因为我一直很想知道为什么每个人都称这种语言如此复杂。现在尽管我知道该问题的答案;) 我特别想知道我是否能在不了解C当今世界的情况下生存。就像我在公司里面试一样,如果我告诉他们我不知道C-他们会认为还可以吗?我擅长的两种语言是Python和C ++。我问这个原因是因为我听说公司在面试中询问数据结构。因此,如果他们要求我实现它,并且如果我使用C ++来实现,那么可以接受吗? 还有人说“当您使用C ++时,您怎么不知道C”,请不要回答:)没冒犯,但我不明白为什么学习C是必备条件。
23 c++  c 

7
在C和C ++中使用无符号整数
我有一个很简单的问题,困扰了我很长时间。我正在处理网络和数据库,因此要处理的许多数据是32位和64位计数器(无符号),32位和64位标识ID(也没有用于符号的有意义的映射)。我几乎从不处理任何可以表示为负数的实际单词问题。 我和我的同事经常使用无符号的类型,如uint32_t和uint64_t对这些问题,并因为它发生如此频繁,我们也将它们用于数组索引和其他常见的整数用途。 同时,我正在阅读的各种编码指南(例如Google)都不鼓励使用无符号整数类型,据我所知,Java和Scala都没有无符号整数类型。 因此,我想不出正确的做法:在我们的环境中使用带符号的值将非常不便,同时编码指南要求严格执行此操作。
23 c  coding-style 


1
“ exit(-1)”来自哪里?
我看到在建议使用在互联网上有很多传统的软件和坏的教程exit(-1),return -1或类似的表示“异常终止”。问题是,至少在POSIX中,该问题-1从未存在过,并且不是有效的状态码。man 3 exit说明了exit()将的值返回status & 0377给父对象,即-1变为255。在非POSIX系统上,EXIT_FAILURE建议可移植。但是我从没看到“ -1表示异常终止”和“ EXIT_FAILURE可能不是1”,这表明他们清楚地相信“ -1”即使在非POSIX系统上也是常规的。 这是一个StackOverflow问题的例子,这个问题可以永久存在。软件“ unrealircd”也是exit(-1)用于终止程序的程序示例。实际上,这使与的交互变得困难systemd。 这种反模式是从哪里来的?在某些情况下有效吗?

7
学习用C编程(来自Python)
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 6年前关闭。 如果这是问这个问题的错误地方,请告诉我。 我是一个职业的Python程序员。我很想学习C。确实,我已经尝试了很多次,但是我总是灰心。在Python中,您编写了几行,程序就产生了奇迹。在C语言中,我似乎无法做任何有用的事情。 甚至连接到Internet似乎都非常复杂。 您对我学习C有什么建议?有没有好的网站?有什么很棒的项目吗? 谢谢
22 learning  python  c 

6
sizeof样式:sizeof(type)或sizeof变量?
我已经看到了两种sizeof用于与内存相关的操作的样式(例如in memset或malloc): sizeof(type)和 sizeof variable 要么 sizeof(variable) 您希望使用哪种样式,还是将两种样式混合使用?何时使用每种样式?每种样式的优缺点是什么,以及何时使用它们? 作为示例,我可以看到以下两种情况,其中一种样式有帮助,而另一种则无济于事: 当您得到错误的指针间接指示时: type *var; ... memset(var, 0, sizeof var); /* oops */ 当类型更改时: new_type var; /* changed from old_type to new_type */ ... memset(&var, 0, sizeof(old_type)); /* oops */
22 c  coding-style 


2
在现代C语言中,可变宽度类型是否已由固定类型取代?
今天,在对Code Review的回顾中遇到了一个有趣的观点。@Veedrac在recommened 此答案该可变大小类型(例如int和long)具有固定尺寸类型等来代替uint64_t和uint32_t。从该答案的评论中引用: int和long的大小(以及它们可以容纳的值)取决于平台。另一方面,int32_t始终为32位长。使用int只是意味着您的代码在不同平台上的工作方式不同,这通常不是您想要的。 @supercat 在此处部分解释了标准不固定常见类型的背后原因。与当时通常用于系统编程的汇编相反,C被编写为可跨体系结构移植。 我认为最初的设计意图是,除int之外的每种类型都是可以处理各种大小数字的最小事物,而int是可以处理+/- 32767的最实用的“通用”大小。 对于我来说,我一直在使用int,并不真正担心其他选择。我一直认为这是性能最好的大多数类型,故事结束了。我认为固定宽度唯一有用的地方是在对数据进行编码以进行存储或通过网络传输时。我也很少见过其他人编写的代码中的固定宽度类型。 我是停留在70年代还是int在C99及以后的时代实际上有使用的理由?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.