这里的目标是创建一个程序,找到并输出1到100之间的所有素数.我注意到我倾向于复杂化并创建低效的代码,我很确定我也在这里做过.初始代码是我的,我在注释标记之间放置的所有内容都是本书中给出的代码作为解决方案.
// Find all prime numbers between 1 and 100
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int counter; // loop counter
int count_two; // counter for second loop
int val; // equals the number of count, used in division to check for primes
bool check;
check = true;
for(counter = 1; counter <= 100; counter++){
val = counter;
for(count_two = 2; count_two <= 9; count_two++){
if((val % count_two) == !(check)){
cout << val << " is …Run Code Online (Sandbox Code Playgroud) 在C中,如果我们执行以下代码:
float a = 0.7;
if (a < 0.7)
{
printf("Less");
}
else
{
printf("no");
}
Run Code Online (Sandbox Code Playgroud)
上面的代码打印"Less".
但是如果我们执行以下代码:
float a = 1.7;
if (a < 1.7)
{
printf("Less");
}
else
{
printf("no");
}
Run Code Online (Sandbox Code Playgroud)
它打印"不".
这是什么原因?float数据类型如何工作?
如何确定当前用户(运行我的应用程序的用户)是否具有管理员权限(即是否为管理员组的成员)?对于访问受限的用户,我需要以不同方式注册一些COM组件.我正在使用C++(WTL和Win32).
我正在对数据进行转换(char*),并且我在注册表中只获得一个char值.如果我不使用转换msvc 2010告诉我参数类型LPCTSTR与const char*不兼容.
有人能帮我吗?
HKEY hKey;
LPCTSTR sk = TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run");
LONG openRes = RegOpenKeyEx(HKEY_CURRENT_USER, sk, 0, KEY_ALL_ACCESS , &hKey);
if (openRes==ERROR_SUCCESS) {
printf("Success opening key.");
} else {
printf("Error opening key.");
}
LPCTSTR value = TEXT("SomeKey");
LPCTSTR data = L"TestData\0";
LONG setRes = RegSetValueEx (hKey, value, 0, REG_SZ, (LPBYTE)data, strlen(data)+1);
if (setRes == ERROR_SUCCESS) {
printf("Success writing to Registry.");
} else {
printf("Error writing to Registry.");
}
cout << setRes << endl;
LONG closeOut = RegCloseKey(hKey);
if (closeOut == ERROR_SUCCESS) …Run Code Online (Sandbox Code Playgroud) 首先我要说的是,我已经在google上广泛搜索了答案,更具体地说.
事实上我(至少我认为我做过)找到了类似问题的人,虽然给他们的答案给了我另一个问题.
我正在使用Visual Studio 2010 Express并使用SFML库(尽管我不认为这最后一部分是相关的)
所以这里:
我有一个名为player.cpp的源文件,它包含类Player,我有一个名为cc.h(命令和控制)的头文件(包含在所有源文件中),它包含所有必需的包含和外部变量/函数.基本代码可以总结如下:
Player.cpp:
#include "cc.h"
class Player
{
private:
//some variables here
public:
//more variables and some functions
}john;//example instance
Run Code Online (Sandbox Code Playgroud)
cc.h:
#pragma once
//some #includes
//some externs
extern Player john;
Run Code Online (Sandbox Code Playgroud)
现在在cc.h中,单词Player被强调为错误,表示它是一个未定义的标识符,但有时只是,有时,visual studio不会将其标记为错误,而是将其识别为类但不识别john作为同一个类的对象/实例(我希望它是这样称呼的).此外,在编译第一个错误时,它显示error C2146: syntax error : missing ';' before identifier 'john'在约翰的外部声明的行中,在cc.h中,显然(对我来说)没有任何意义.
我一直在测试sqlite3类型在移动应用程序上的效率,但我的行为很奇怪.
我这样创建了一个表:
create table numeric_t(int_4 INTEGER(4), int_8 INTEGER(8), real_4 REAL(4), real_8 REAL(8), new_real DOUBLE, int_1 INTEGER(1));
Run Code Online (Sandbox Code Playgroud)
我正在设置值并查看哪些行显示了多少小数等等...
假设:
- INTEGER列不能存储带小数的数字,这是错误的吗?
- INTEGER(1),INTEGER(4)和REAL(4)不应该存储与其他小数位一样多的小数位数?
谢谢
main( ) {
int i = 4, j = -1, k = 0, w, x, y, z ;
w = i || j || k ;
x = i && j && k ;
y = i || j && k ;
z = i && j || k ;
printf ( "\nw = %d x = %d y = %d z = %d", w, x, y, z ) ;
}
Run Code Online (Sandbox Code Playgroud)
我只是学习C而且我遇到了这段代码.老实说,我不知道w,x,y和z分配给了什么.显然输出如下:
w = 1 x = 0 y = …Run Code Online (Sandbox Code Playgroud) 我的问题与此类似,但我没有找到我需要的信息.我有我的类构造函数.
CustomTreeViewItem::CustomTreeViewItem(CustomTreeView* list)
: m_childs(), m_expanded(false), m_list(list), m_components(), m_depth(1),
m_rect(), m_root(this)
{}
Run Code Online (Sandbox Code Playgroud)
我this在构造函数中使用指针但不调用任何方法,所以我不调用未定义的行为.所以一切都很好,但我收到警告,现在我正在编写一些lib(小框架)所以我必须编写无错误的代码.所以我已将代码更改为:
CustomTreeViewItem::CustomTreeViewItem(CustomTreeView* list)
: m_childs(), m_expanded(false), m_list(list), m_components(), m_depth(1),
m_rect(), m_root(NULL)
{
m_root = this;
}
Run Code Online (Sandbox Code Playgroud)
现在我没有得到任何警告,但是这样我失去了表现(非常轻微,但无论如何都是失败).我想问一下是否有任何方法可以保持最高性能并防止出现此警告.
哪一项计算效率更高,为什么?
A)重复阵列访问:
for(i=0; i<numbers.length; i++) {
result[i] = numbers[i] * numbers[i] * numbers[i];
}
Run Code Online (Sandbox Code Playgroud)
B)设置局部变量:
for(i=0; i<numbers.length; i++) {
int n = numbers[i];
result[i] = n * n * n;
}
Run Code Online (Sandbox Code Playgroud)
是不是必须计算重复的数组访问版本(使用指针算术),使第一个选项变慢,因为它正在这样做?:
for(i=0; i<numbers.length; i++) {
result[i] = *(numbers + i) * *(numbers + i) * *(numbers + i);
}
Run Code Online (Sandbox Code Playgroud) c++ ×9
c ×4
winapi ×2
windows ×2
class ×1
compression ×1
constructor ×1
database ×1
extern ×1
loops ×1
optimization ×1
performance ×1
pointers ×1
precision ×1
registry ×1
sqlite ×1
this ×1
types ×1
undefined ×1
zip ×1