Tag: 变量赋值

如果变量为NULL,则有条件地设置变量

当单步执行sqlite3_stmt ,我想检查NULL的返回值而不是存储它并检查存储的值。 这就是我现在正在做的事情: char *email = (char *)sqlite3_column_text(statement, 10); if (email == NULL) email = “”; 这是我想要做的事情,减去对column的双重调用: char *email = ((char *)sqlite3_column_text(statement, 10)) ? (char *)sqlite3_column_text(statement, 10) : “”; 有没有办法更简洁地表达第二个表达式? 我必须重复做很多这样的事情,所以我正在寻求简洁。 我知道这是一个控制流的问题,而不是SQLite API本身的问题,但你有它。 我想不出这样做的好方法。

C:传递(双重)作业

我在C中使用了这样的构造: list->head = list->tail = NULL; 现在我考虑这是否真的意味着我想的。 这是什么意思? list->head = NULL; list->tail = NULL; 要么 list->head = list->tail; list->tail = NULL; thx澄清

条件运算符中的赋值有什么问题?

有一个错误。 在以下代码中为[i]赋值是不对的? 或条件运算符出了什么问题? #include #include int main(){ char a[12]=”sumit tyagi”; int i=0; while(a[i]!=’\0′){ a[i]>90 ? a[i]=a[i]-32 : a[i]=a[i]+32; //error in this line i++; } printf(“\n %s”,a);

为什么我不能直接将int赋给int指针,如下所示:int * p = 6;?

错误:从“int”到“int *”的无效转换 int *q = 8; 工作良好。 *q = 6; 为什么我不能直接将int赋给int指针,如下所示: int *q = 6 ; 我可以在下一行安全地分配它吗?

简单的C数组声明/赋值问题

在更高级别的语言中,我将能够在C中使用类似于此示例的内容,并且它会很好。 但是,当我编译这个C例子时,它会痛苦地抱怨。 如何将新数组分配给我声明的数组? int values[3]; if(1) values = {1,2,3}; printf(“%i”, values[0]); 谢谢。

表达式必须是可修改的L值

我这里有char text[60]; 然后我做了一个if : if(number == 2) text = “awesome”; else text = “you fail”; 并且它总是说表达式必须是可修改的L值。

如何在C / C ++中获取多维数组的列?

int matrix[9][9],*p; p=matrix[0]; 这工作并给出第一行matrix ,但如何得到matrix第一列我试过p=matrix[][0]; ? 另外我不明白为什么下面的代码会出现编译错误? int matrix[9][9],p[9]; // it looks really ugly, byt why it doesn’t work ? p=matrix[0]; // compiler gives “invalid array assigment” 是因为多维数组是数组的数组 – 我们应该将matrix[i][j]为第i个嵌套数组的第j个元素?

初始化变量并在声明后立即赋值给它是否有区别?

假设一个纯粹的非优化编译器,在初始化变量并在声明后为其赋值时,机器代码是否存在差异? 初始化方法 : int x = 2; 作业方式 : int x; x = 2; 我使用GCC输出为这两种不同方法生成的程序集,并且两者都产生了一条机器指令: movl $2, 12(%esp) 该指令只是将x变量保存的内存设置为值2 。 GCC可能正在优化这一点,因为它可以识别操作的最终结果; 但我认为这是解释这两个版本的唯一方法。 我的理由是两个版本都做同样的事情:将内存的一部分设置为特定值。 那么,如果生成的机器代码相同,那么为什么通常会在术语“ 初始化 ”和“ 赋值 ”之间进行区分? 术语“ 初始化 ”是否纯粹用于区分具有特定值的变量,这些变量具有在内存中留下任何垃圾值的那些(非初始化)变量?

未设置的C指针不为空

我正在搞乱C指针。 当我编译并运行以下代码时。 例1: #include int main() { int k; int *ptr; k = 555; if (ptr == NULL) { printf(“ptr is NULL\n”); } else { printf(“ptr is not NULL\n”); printf(“ptr value is %d\n”, *ptr); } printf(“ptr address is %p\n”, ptr); } 我得到输出: ptr is not NULL ptr value is 1 ptr address is 0x7fff801ace30 如果我没有为k赋值: […]

在C中,+ = b比a = a + b更有效吗?

我在某些语言中知道以下内容: a += b 比以下更有效: a = a + b 因为它不需要创建临时变量。 这是C的情况吗? 使用+ =更高效(因此也-= *=等)