printf中double的正确格式说明符是什么? 是%f还是%lf ? 我相信它的%f但我不确定。 代码示例 #include <stdio.h> int main() { double d =1.4; printf("%lf", d); //is this wrong? }
战舰! 早在2003年(当时我17岁),我参加了一个战舰AI编码竞赛。 即使我输了那场比赛,我也有很多乐趣,并从中学到很多东西。 现在,我想重振这场比赛,寻找最好的战舰AI。 这里是框架,现在托pipe在Bitbucket上 。 获胜者将被授予+450的声望! 比赛将于2009年11月17日开始 。 17日之后不得迟于零时间进行或修改。 (中部标准时间)尽早提交你的参赛作品,所以你不要错过机会! 为了保持这一目标 ,请遵循比赛的精神。 游戏规则: 游戏将在10×10格子上播放。 每个参赛者将把5艘(长度为2,3,4,5)的船舶分别放在电网上。 没有船可能重叠,但它们可能相邻。 然后竞争对手轮stream向对手单枪匹马发射。 游戏的变化允许每发射一发射出多发,每发射一发。 如果投篮下沉,命中或失误,对手将通知参赛者。 当任何一个玩家的所有船只都沉没时,游戏结束。 比赛规则: 比赛的精神是find最好的战列舰algorithm。 任何违反比赛精神的行为都将成为取消资格的理由。 干扰对手是违背比赛精神的。 multithreading可以在以下限制下使用: 没有超过一个线程可能正在运行,而不是轮到你。 (虽然,任何数量的线程可能处于“暂停”状态)。 没有线程可以以“正常”以外的优先级运行。 鉴于上述两个限制,在您轮到时您将至less保证3个专用CPU内核。 每个游戏CPU时间的限制1秒被分配给主线程上的每个参赛者。 时间不够会导致目前的游戏失败。 任何未处理的exception都将导致当前游戏的丢失。 networking访问和磁盘访问是允许的,但您可能会发现时间限制相当严重。 但是,增加了一些设置和拆卸方法来减轻时间压力。 代码应该作为一个答案张贴在堆栈溢出,或者如果太大,链接。 条目的最大总大小(未压缩)为1 MB。 .Net 2.0 / 3.5是唯一的框架要求。 您的条目必须实现IBattleshipOpponent接口。 评分: 101场比赛中最好的51场比赛是胜者。 所有的竞争者都会玩互相配对的循环赛模式。 最好的一半的竞争对手将发挥双淘汰赛,以确定赢家。 (实际上大于或等于一半的两个最小的幂)。 我将使用锦标赛的TournamentApi框架。 结果将张贴在这里。 如果您提交了多个条目,则只有您得分最高的条目符合双重条件。 祝你好运! 玩的开心! 编辑1: 感谢Freed […]
在eclipse中有一个快捷键Ctrl + Shift + F ,它重新缩进代码并修复注释和空白行。 是否有一个相当于Visual Studio 2010?
是否有内置的方式来获取完整的url? 我正在寻找像GetFullUrl("Action", "Controller") ,将返回像http://www.fred.com/Controller/Action 。 我寻找这个的原因是为了避免在生成的自动电子邮件中对url进行硬编码,这样就可以始终相对于网站的当前位置生成url。
我在这里读了学习C Objective-C之前? 通常我会用纯C代码代替一些Obj-C代码(毕竟你可以尽可能多地混合它们,Obj-C方法的内容可以完全是纯C代码) 这是真的? 是否有可能纯粹用C语言编写iPhone应用程序?
我正和一个队友讨论关于locking.NET的问题。 他是一个非常聪明的人,在低级和高级程序devise方面有着广泛的背景,但是他在低级程序devise方面的经验远远超过了我。 无论如何,他争辩说,为了避免“僵尸线程”崩溃系统的可能性很小,在可能的情况下尽可能在重负载的关键系统上应该避免使用.NETlocking。 我经常使用locking,我不知道什么是“僵尸线程”,所以我问。 我从他的解释中得到的印象是,僵尸线程是一个已经终止的线程,但是仍然保留了一些资源。 他给出了一个僵尸线程如何破坏系统的例子,线程在locking某个对象之后开始某个过程,然后在释放锁之前终止。 这种情况有可能导致系统崩溃,因为最终尝试执行该方法将导致线程全部等待访问永远不会返回的对象,因为使用locking对象的线程已经死亡。 我想我有这个要点,但是如果我离开了基地,请让我知道。 这个概念对我有意义。 我并不完全相信这是在.NET中可能发生的真实场景。 我以前从来没有听说过“僵尸”,但是我确实认识到,在较低层次深入工作的程序员往往对计算基础(比如线程)有更深的理解。 我确实看到locking的价值,然而,我看到许多世界级的程序员利用locking。 我也有限的能力来评估自己,因为我知道lock(obj)语句实际上只是语法糖: bool lockWasTaken = false; var temp = obj; try { Monitor.Enter(temp, ref lockWasTaken); { body } } finally { if (lockWasTaken) Monitor.Exit(temp); } 并且因为Monitor.Enter和Monitor.Exit被标记为extern 。 似乎可以想象的是,.NET会做一些处理来保护线程免受系统组件的影响,但这纯粹是一种猜测,可能仅仅是因为我从来没有听说过“僵尸线程”之前。 所以,我希望我能在这里得到一些反馈: 有没有比我在这里解释的“僵尸线”更清晰的定义? 僵尸线程可以发生在.NET上吗? (为什么?为什么不?) 如果适用,我如何强制在.NET中创build一个僵尸线程? 如果适用,如何在.NET中利用locking而不冒着僵尸线程的风险? 更新 两年前我问了一下这个问题。 今天这发生了:
有什么好的例子来区分一个struct和一个union ? 基本上我知道struct使用其成员的所有内存,并且union使用最大的成员内存空间。 有没有其他操作系统级别的差异?
目前我正在使用以下function获取当前用户的临时文件夹path: string tempPath = System.IO.Path.GetTempPath(); 在一些机器上,它给了我当前用户的临时文件夹path,如: C:\ Documents and Settings \ administrator \ Local Settings \ Temp \ 在一些机器上,它给了我系统临时文件夹path,如: C:\ WINDOWS \ TEMP MSDN文档也说上面的API返回当前系统的临时文件夹。 是否有任何其他的API可以给我当前用户的临时文件夹path,如下所示: C:\ Documents and Settings \ administrator \ Local Settings \ Temp \
我需要一个强大而简单的方法来从一个简单的string中删除非法的path和文件字符。 我已经使用了下面的代码,但似乎没有做任何事情,我错过了什么? using System; using System.IO; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string illegal = "\"M<>\"\\a/ry/ h**ad:>> a\\/:*?\"<>| li*tt|le|| la\"mb.?"; illegal = illegal.Trim(Path.GetInvalidFileNameChars()); illegal = illegal.Trim(Path.GetInvalidPathChars()); Console.WriteLine(illegal); Console.ReadLine(); } } }
我首先注意到2009年gcc(至less在我的项目和我的机器上)有倾向于生成明显更快的代码,如果我优化大小 ( -Os ),而不是速度( -O2或-O3 ),我一直想知道为什么。 我已经设法创build(相当愚蠢的)代码,显示这个令人惊讶的行为,并足够小,在这里张贴。 const int LOOP_BOUND = 200000000; __attribute__((noinline)) static int add(const int& x, const int& y) { return x + y; } __attribute__((noinline)) static int work(int xval, int yval) { int sum(0); for (int i=0; i<LOOP_BOUND; ++i) { int x(xval+sum); int y(yval+sum); int z = add(x, y); sum += z; […]