int main(void)
{
char four[4] = "four";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当编译为C++程序时,G ++报告
xxx.cpp:在函数int main()中:
xxx.cpp:3:错误:字符数组的初始化字符串太长
编译一个C程序时,GCC报告没有错误.
在我看来,正如我所料,赋值正确地将所有4个字节复制到变量中.
所以我的问题归结为......
在C中观察到的行为是正确的还是我在某处接触到未定义的行为,或者它是完全不同的东西?
我一直在考虑在家开始一个侧面项目来锻炼我的大脑. 黑白棋看起来像一个简单的游戏,其中移动性对游戏玩法有深远的影响.它至少比tic tac toe更进了一步.这将是针对某种AI的单一玩家.
我想在PC上用C++试试这个.
我可能遇到什么问题?
你会推荐什么图形库?
我有什么问题不够聪明地问自己?
当我们谈论NULL时,我会不时遇到与其他程序员的通信问题.现在NULL可以是
一个NULL指针
,NUL字符
是某种数据库中的空数据元素.
NUL似乎是最令人困惑的.它是ASCII字符0x00.
我倾向于在代码中使用'\ 0'来表示它.我的组中的一些开发人员
倾向于简单地使用0,并让编译器隐式地将其转换为char.
您更喜欢NUL使用什么?为什么?
我曾经使用下面的代码将1D数组写入文件:
FILE *fp;
float floatValue[5] = { 1.1F, 2.2F, 3.3F, 4.4F, 5.5F };
int i;
if((fp=fopen("test", "wb"))==NULL) {
printf("Cannot open file.\n");
}
if(fwrite(floatValue, sizeof(float), 5, fp) != 5)
printf("File write error.");
fclose(fp);
/* read the values */
if((fp=fopen("test", "rb"))==NULL) {
printf("Cannot open file.\n");
}
if(fread(floatValue, sizeof(float), 5, fp) != 5) {
if(feof(fp))
printf("Premature end of file.");
else
printf("File read error.");
}
fclose(fp);
for(i=0; i<5; i++)
printf("%f ", floatValue[i]);
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果我想写和读取2D数组?
我正在尝试使用fermats方法创建一个素数因子.
该行生成错误
find_factors(A, B, FactorThis) when is_a_square(B) == true ->
Run Code Online (Sandbox Code Playgroud)
调用本地/导入函数is_a_square/1是非法的
我在这个实现中看到的唯一可能的替代方法是在函数中使用某种case语句.我正在避免这种情况,因为它可能搞砸尾部递归.我是Erlang noob. 还有哪些其他方法可以实现此功能?
get_int_part_of_sqrt(N) ->
trunc(math:sqrt(N)).
is_a_square(N) ->
get_int_part_of_sqrt(N) * get_int_part_of_sqrt(N) == N.
calculate_new_b(A, FactorThis) ->
NewB = trunc(abs((A * A) - FactorThis)),
io:format("Calculate_new_b A^2 ~w- FT ~w= NB ~w ~n",[A*A,FactorThis,NewB]),
find_factors(A, B, FactorThis) when is_a_square(B) == true ->
io:format("find_factors true ~w ~w~n", [A, B]),
{ok, A + get_int_part_of_sqrt(B), A - get_int_part_of_sqrt(B)};
find_factors(A, B, FactorThis) ->
io:format("find_factors false ~w ~w~n", [A, B]),
NewA = A + 1, …Run Code Online (Sandbox Code Playgroud) 给出以下代码:
while(is_running)
{
std::vector<buffer> buffers;
// fill buffers
// use buffers
}
Run Code Online (Sandbox Code Playgroud)
现代编译器是否执行以下转换?
std::vector<bufer> buffers;
while(is_running)
{
// fill buffers
// use buffers
buffers.clear();
}
Run Code Online (Sandbox Code Playgroud) 存在其他人加载的表.我需要查询表,但缺少索引会使查询计划变得糟糕.我想要做的是检测是否有特定列的索引,以便我可以创建它(如果它不存在),如果它已经存在则不创建它.
谢谢.
邪恶
在Z80机器代码中,一种将缓冲区初始化为固定值的廉价技术,比如所有空白.所以一大堆代码可能看起来像这样.
LD HL, DESTINATION ; point to the source
LD DE, DESTINATION + 1 ; point to the destination
LD BC, DESTINATION_SIZE - 1 ; copying this many bytes
LD (HL), 0X20 ; put a seed space in the first position
LDIR ; move 1 to 2, 2 to 3...
Run Code Online (Sandbox Code Playgroud)
结果是DESTINATION的内存块完全填满了空白.我已经尝试了memmove和memcpy,并且无法复制这种行为.我希望memmove能够正确地完成它.
memmove和memcpy为什么会这样?
有没有合理的方法来进行这种数组初始化?
我已经知道char array [size] = {0}用于数组初始化
我已经知道memset将为单个字符完成工作.
还有什么其他方法可以解决这个问题?
嗨,
有人可以帮助我理解为什么SQUARE(x)的值是49?
我使用的是Visual C++ 6.0.
#define SQUARE(X) X * X
int main(int argc, char* argv[])
{
int y = 5;
printf("%d\n",SQUARE(++y));
return 0;
}
Run Code Online (Sandbox Code Playgroud) 在Perl中是否有任何方法可以让我以只读模式获取对象,以避免在另一个用户锁定文件时弹出的对话框?
$document = Win32::OLE->GetObject("$docFile")
or die "can't open $docFile";
Run Code Online (Sandbox Code Playgroud)