哪个宏语句可能会导致意外结果?
#define YEAR_LENGTH 365
#define MONTH_LENGTH 30
#define DAYCALC(y, m, d) ((y * YEAR_LENGTH) + (m * MONTH_LENGTH) + d)
int main()
{
int x = 5, y = 4 , z = 1;
cout << DAYCALC(x *3 , y %3 , z) << endl ;
cout << DAYCALC(x +12 , y , 300) << endl ;
cout << DAYCALC(x , 40 - y , 3+z) << endl ;
cout << DAYCALC(x , y , (z+50)) << endl ;
cout …Run Code Online (Sandbox Code Playgroud) 给一个C++类foo,里面有一个synchronized方法.我们有两个foo对象,名为f1和f2,如果f1和f2同时运行,我们能保证只有一个线程访问同步方法吗?
我的想法:
使用互斥量,无论谁需要访问该方法,谁获得互斥锁.
这个面试问题似乎并不那么简单.
有解决方案吗
谢谢
关于python深度复制和浅拷贝的问题.
帖子在 深拷贝和浅拷贝之间有什么区别?
无法帮助我.
为什么1的总和是6而不是10?
kvps = { '1' : 1, '2' : 2 }
theCopy = kvps.copy() # both point to the same mem location ?
kvps['1'] = 5
sum = kvps['1'] + theCopy['1']
print sum
Run Code Online (Sandbox Code Playgroud)
输出和是6
aList = [1,2]
bList = [3,4]
kvps = { '1' : aList, '2' : bList }
theCopy = kvps.copy() # both point to the same mem location ?
kvps['1'][0] = 5
sum = kvps['1'][0] + theCopy['1'][0]
print sum
Run Code Online (Sandbox Code Playgroud)
输出总和是10
在linux x86_64上的C++代码中,我需要加倍精度计算(+或 - ).
26.100000000000001 - 26 + 0.10000000000000001
我有:
0.20000000000000143
我想得到0.2.
这里,显示格式不是导入的,计算结果将用于一些if-else分支条件.所以,我只希望if-else条件比较十进制数字后面的4位数.
这似乎是一个舍入错误?
如何将计算精度限制在小数点后的4位数?
我不想调用任何函数以避免开销.
由于转换开销,我不想使用stringstream.
有更好的想法吗?
谢谢
这是一个执行字符串反转的Erlang代码.
但是,它不起作用.
-module(lists1).
-export([reverse/1]).
reverse(L) ->
reverse(L, []).
reverse([H|T], L) ->
reverse(T, [H|L]);
reverse([], L) ->
L.
Run Code Online (Sandbox Code Playgroud)
lists1:reverse(Bbc).**异常错误:没有匹配lists1的函数子句:reverse(def,[])(lists1.erl,第5行)
为什么?
任何帮助将不胜感激.
谢谢
我试图在我的C++ pthread程序中包含atomic.
#include <atomic>
Run Code Online (Sandbox Code Playgroud)
但是,我得到了错误:
错误:原子:没有这样的文件或目录
我试过了 :
#include <asm/atomic>
#include <atomic.h>
#include <linux/atomic>
#include <util/atomic>
#include <stdcatomic>
#include <catomic>
Run Code Online (Sandbox Code Playgroud)
没有人工作.
我的gcc是gcc版本4.1.2 20080704(Red Hat 4.1.2-52)
帖子:
在ubuntu中#include <cstdatomic>"没有这样的文件"
也不工作.
And #include <thread> also got : No such file or directory
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.
谢谢 !
UPDATE,
我正在尝试在Linux上安装GCC 4.7,但在"make check"中,我收到错误,
autogen -T /remote/mypath/gcc_4_7_2012_5_28/gcc_4_7_new_2012_5_29/trunk/fixincludes/check.tpl , remote/mypath/gcc_4_7_2012_5_28/gcc_4_7_new_2012_5_29/trunk/fixincludes/inclhack.def ,
make[2]: execvp: autogen: Permission denied, then I tried to install autogen, but
got: I need to install guile-devel, then when I installed …Run Code Online (Sandbox Code Playgroud) 这是一个面试问题,已经完成.
哪条线有错误?
#include<iostream>
template<class T> void foo(T op1, T op2)
{
std::cout << "op1=" << op1 << std::endl;
std::cout << "op2=" << op2 << std::endl;
}
template<class T>
struct sum
{
static void foo(T op1, T op2)
{
std::cout << "sum=" << op2 << std::endl ;
}
};
int main()
{
foo(1,3); // line1
foo(1,3.2); // line2
foo<int>(1,3); // line3
foo<int>(1, '3') ; // line 4
sum::foo(1,2) ; // line 5 ,
return 0;
}
Run Code Online (Sandbox Code Playgroud)
第2行有错误,因为模板参数与定义不匹配.第5行有错误,因为缺少模板参数.
但是,第1行不是错误,我不知道为什么,它是否也错过了模板参数?
谢谢 !
如何在python中进行浮点计算?
for j in range(10 , 50):
print "(10/(j+1)) is %f " % (10/(j+1))
Run Code Online (Sandbox Code Playgroud)
为什么输出都是0?
j必须是整数,但我需要浮动结果.
谢谢
我正在为一个真正的应用项目做C++程序.
我用valgrind做内存泄漏检查.
我有 :
10个块中的160个字节肯定在丢失记录1中丢失2 == 14312 ==在0x4A0846F:malloc(vg_replace_malloc.c:236)
但是,我已经调用了free()来释放它.
怎么解决?为什么我有内存泄漏?
任何帮助将不胜感激.!
代码如下:
#include <stdio.h>
#include <stdlib.h>
int * GetSomeIDs() ;
/*-------- GetSomeIDs-----*/
typedef struct {
char* alias; /* '\0'-terminated C string */
int specific_id;
} aliasID;
int GetNumberOfAliases(void)
{
return 10;
}
aliasID *GetNextAlias(void)
{
aliasID *p = (aliasID *) malloc(sizeof(aliasID)) ;
p->alias = "test alias";
p->specific_id = rand();
return p;
}
int *GetSomeIDs2(aliasID ***a, int *aIDsize , int *idSize)
{
int *ids = (int *) malloc(sizeof(int) * 8) ; …Run Code Online (Sandbox Code Playgroud) 我正在Linux上进行多线程C++提升.
即使我尝试使用锁,以下程序仍然具有竞争条件.
结果是8或9或5.它不应该发生.
#include <iostream>
#include <boost/bind.hpp>
#include <boost/threadpool.hpp>
#include <boost/thread/mutex.hpp>
#include <boost/thread.hpp>
boost::mutex myMutex ;
int g = 0 ;
void f()
{
//myMutex.lock();
{
boost::mutex::scoped_lock lock(myMutex);
++g;
}
//myMutex.unlock();
return ;
}
const int threadnum = 10;
int main()
{
boost::threadpool::fifo_pool tp(threadnum);
for (int i = 0 ; i < threadnum ; ++i)
tp.schedule(boost::bind(f));
std::cout << g << std::endl ;
return 0 ;
}
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.
谢谢 !