我正在使用Visual C++ 2012并从命令行编译以下文件:
#include <stdio.h>
int main()
{
printf("%.5f", 18/4+18%4);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
链接MSVCRT.LIB而不是LIBCMT以避免运行时错误R6002.
对于此程序,输出的值为0.00000.
但是,如果我在C++中执行完全相同的操作
#include <iostream>
using namespace std;
int main()
{
cout << 18/4+18%4 << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
现在,它打印出6,就像它应该的那样.
有什么不同?它与语言本身(C vs C++)或输出方法(cout vs printf)有关,还是只是与MSVC的怪癖?
我必须使用MSVC2012和v100平台工具集(来自MSVC2010)构建项目.不幸的是,我在代码中使用C++ 11功能" 基于范围 ".我想知道是否有一个预处理器指令允许在编译时知道当前的平台工具集.即
#if (_MSC_PLATFORM_TOOLSET > 100)
# define ALLOW_RANGE_BASED_FOR 1
#else
# define ALLOW_RANGE_BASED_FOR 0
#endif
Run Code Online (Sandbox Code Playgroud)
我尝试使用_MSC_VER宏,但对于两个平台工具集,它设置为1700(这确实有意义,因为我仍在使用MSVC2012).我很感激任何建议.谢谢.
我知道闭包通过保存对已执行函数的引用来保持执行上下文的活跃性.
我想知道整个上下文是保存还是仅保存所需的部分.
在前一种情况下,我需要以不浪费内存的方式构造函数.无论如何,这应该是设计目标,但我想知道JavaScript是否也会处理它.
这是一个简单的例子(基于单页Web应用程序,Mikowski/Powell,第56页):
var ctx;
var outer_function = function () {
var dummy = 'not required for output';
var output = 'output';
var inner_function = function () {
return { output: output };
}
return inner_function;
};
ctx = outer_function();
// returns { output: 'output' }
ctx();
Run Code Online (Sandbox Code Playgroud)
dummy对象在执行后是否存储在闭包中,
outer_function即使它不可访问也不会被使用?
我正在用C++转换一个算法,这个算法在10多年里我还没有触及过,我只是想知道是否有人可以告诉我(char *)+2结果是什么?
确切的代码:
uint32_t SuperFastHash (const char * data, int len) {
...
tmp = (get16bits (data+2) << 11) ^ hash;
Run Code Online (Sandbox Code Playgroud) 第一次在这里发帖,很抱歉,如果我弄错了一些细节。我正在尝试捕获用户输入无效(不存在)员工的异常。我尝试了许多不同的变体,但从未出现错误。相反,代码只是终止,在这种情况下,它将在以下几行之后退出:
MyPostSalary = Convert.ToDouble(Console.ReadLine());
Console.WriteLine();
Run Code Online (Sandbox Code Playgroud)
谁能看到我做错了什么?
完整代码:
Console.Write("Employee ID: ");
myEID = Console.ReadLine();
try
{
Console.Write("Post ID: ");
myPID = Console.ReadLine();
if ((myEmployees[myEID] is MonthlyPaidEmployee) || (myEmployees[myEID] isWeeklyPaidEmployee))
{
Console.Write("Post Name: ");
MyPostName = Console.ReadLine();
Console.Write("Post Start Date: ");
MyPostStartDate = Convert.ToDateTime(Console.ReadLine());
Console.Write("Post End Date: ");
MyPostEndDate = Convert.ToDateTime(Console.ReadLine());
Console.Write("Post Salary: ");
MyPostSalary = Convert.ToDouble(Console.ReadLine());
Console.WriteLine();
myPost = new Post(myPID, MyPostName, MyPostStartDate, MyPostEndDate, MyPostSalary);
if (myEmployees[myEID] is MonthlyPaidEmployee)
{
myMonthlyEmp = (MonthlyPaidEmployee)myEmployees[myEID];
myMonthlyEmp.PostHistory.Add(myPID, myPost);
}
if (myEmployees[myEID] is WeeklyPaidEmployee)
{ …Run Code Online (Sandbox Code Playgroud) 我有一个Windows窗体应用程序,上面有6个datagridviews.我想知道用户是否点击了其中一个,点击了哪个datagridview.我为每个datagridviews都有单元格单击事件.
我想在这里使用它:
dgvArray[i].Rows[j].Cells[4].Value = GlobalData[j + i * 8 + interface * 64];
Run Code Online (Sandbox Code Playgroud)
dgvArray是一个6的数组DataGridViews.
通常我想要一个变量包含这个"嘿你!".
在Javascript中我们可以
var str = 'Hey' + 'you!';
Run Code Online (Sandbox Code Playgroud)
在Web语言中我们可以
$str = 'Hey'.'you!';
Run Code Online (Sandbox Code Playgroud)
但在c ++中
+ or . also cannot combine it..
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?我相信也许这只是一件简单的事情,但我真的不知道如何在c ++中结合这个,请帮助......
c++ ×3
c# ×2
c ×1
closures ×1
cout ×1
datagridview ×1
javascript ×1
pointers ×1
preprocessor ×1
printf ×1
visual-c++ ×1