小编Evi*_*ach的帖子

为什么switch语句需要休息?

给出一个简单的switch语句

switch (int)
{
    case 1 :
    {
        printf("1\n");
        break;
    }

    case 2 : 
    {
        printf("2\n");
    }

    case 3 : 
    {
        printf("3\n");
    }
}
Run Code Online (Sandbox Code Playgroud)

在案例2中没有break语句意味着在案例3的代码中将继续执行.这不是偶然的; 它是这样设计的.为什么做出这个决定?这提供了什么好处与块的自动中断语义?理由是什么?

c language-design

134
推荐指数
6
解决办法
7万
查看次数

编码实践,使编译器/优化器能够制作更快的程序

许多年前,C编译器并不是特别聪明.作为一种解决方法,K&R发明了register关键字,提示编译器,将这个变量保存在内部寄存器中可能是一个好主意.他们还使第三级运营商帮助生成更好的代码.

随着时间的推移,编译器逐渐成熟.他们变得非常聪明,他们的流量分析使他们能够更好地决定寄存器中的值,而不是你可能做的.register关键字变得不重要了.

由于别名问题,FORTRAN对于某些操作可能比C更快.从理论上讲,仔细编码可以解决这个限制,使优化器能够生成更快的代码.

有哪些编码实践可以使编译器/优化器生成更快的代码?

  • 确定您使用的平台和编译器,将不胜感激.
  • 为什么这项技术似乎有效?
  • 鼓励使用示例代码.

这是一个相关的问题

[编辑] 这个问题不是关于分析和优化的整个过程.假设程序编写正确,编译完全优化,测试并投入生产.您的代码中可能有一些构造禁止优化器尽其所能地完成最佳工作.您可以做什么来重构将删除这些禁令,并允许优化器生成更快的代码?

[编辑] 偏移相关链接

c c++ optimization performance

116
推荐指数
13
解决办法
2万
查看次数

我需要将邮政编码存储在数据库中.这个专栏应该有多大?

我希望在我的Oracle数据库中该列是VARCHAR2.

美国拉链是9.

加拿大人7岁.

我认为32个字符是合理的上限

我错过了什么?

[编辑] TIL:12是这个问题的合理答案感谢所有贡献的人.

database oracle globalization postal-code

96
推荐指数
3
解决办法
8万
查看次数

在任何情况下new都会返回NULL吗?

我知道根据C++标准,如果新的无法分配内存,它应该抛出std :: bad_alloc异常.但我听说有些编译器如VC6(或CRT实现?)不遵守它.这是真的 ?我问这个是因为在每个新语句之后检查NULL会使代码看起来非常难看.

c++ memory-management visual-c++-6 new-operator visual-c++

52
推荐指数
3
解决办法
4万
查看次数

无论'entry'关键字发生了什么?

前几天在我的白皮书中巡航时,我在C关键字列表中注意到了. entry是该列表中的关键字之一.

它留作将来使用.回想一下我的Fortran时代,有一种类型的函数使用entry语句来创建第二个参数签名,或者进入函数的入口点.

这是最初打算用于什么条目?或者完全不同的东西?

关于entry关键字的故事是什么?

c language-design

35
推荐指数
3
解决办法
6041
查看次数

如何说服你的开发人员编写简短的方法?

长期方法在某些方面是邪恶的:

  • 他们很难理解
  • 他们很难改变
  • 它们很难重复使用
  • 他们很难测试
  • 他们的凝聚力很低
  • 它们可能具有高耦合
  • 他们往往过于复杂

如何说服你的开发人员编写简短的方法?(武器被禁止=)

来自agiledeveloper的问题

language-agnostic metrics

33
推荐指数
8
解决办法
2347
查看次数

安装程序不会覆盖现有应用程序

我有一个包含8个项目的Visual Studio 2010解决方案.它还有一个我用来创建安装的安装项目.

它是在客户端PC上首次安装时工作正常.但是,然后我修改了我的项目,并构建了一个新的安装程序,并将其传递给客户端.发生这种情况时,客户端必须首先手动卸载上次安装,然后运行安装程序.

如果他们运行安装程序,没有卸载,它似乎不会覆盖现有文件(exe和dll).通常它只是被修改的exe.但是,它不会覆盖它.客户端计算机上的版本似乎保持不变.

有没有办法强制它覆盖?

请注意,当我修改我的主应用程序项目时,我会转到项目的属性,程序集信息,并增加程序集版本以及文件版本.

setup-project visual-studio-2010

28
推荐指数
3
解决办法
3万
查看次数

您是否使用旅行推销员算法来解决问题?

我在NP Completeness的背景下在大学里学习过TSP.我实际上从未遇到过适用于实际问题的情况.一些研究表明,它已被用来选择最便宜的移动钻头的路径,即在电路板上钻孔.这几乎是我所能找到的.

你在用它吗?TSA还有哪些其他实际应用?

algorithm traveling-salesman np-hard

23
推荐指数
6
解决办法
8210
查看次数

Sql中列命名的最佳实践

说我有一张叫做学生的桌子.您更喜欢哪些列的命名约定?你也可以推荐自己的.

Student
-------
StudentID
StudentName
MentorID

Student
-------
StudentID
Name
MentorID

Student
-------
ID
Name
MentorID
Run Code Online (Sandbox Code Playgroud)

sql

22
推荐指数
6
解决办法
2万
查看次数

从信号处理程序中抛出异常

我们有一个库,可以处理错误报告的许多方面.我的任务是将此库移植到Linux.当我的小测试套件运行时,其中一个测试失败了.测试的简化版本如下所示.

// Compiler: 4.1.1 20070105 RedHat 4.1.1-52
// Output: Terminate called after throwing an instance of 'int' abort

#include <iostream>
#include <csignal>
using namespace std;

void catch_signal(int signalNumber)
{
    signal(SIGINT, SIG_DFL);
    throw(signalNumber);
}

int test_signal()
{
    signal(SIGINT, catch_signal);

    try
    {
        raise(SIGINT);
    }
    catch (int &z)
    {
        cerr << "Caught exception: " << z << endl;
    }
    return 0;
}

int main()
{
    try
    {
        test_signal();
    }
    catch (int &z)
    {
        cerr << "Caught unexpected exception: " << z << endl; …
Run Code Online (Sandbox Code Playgroud)

c++ signals exception

22
推荐指数
3
解决办法
2万
查看次数