小编Gri*_*han的帖子

在C中,当用作函数参数时,*也表示与void相同吗?

例如,查看以下(抽象)声明:

int (*) (*)
Run Code Online (Sandbox Code Playgroud)

//指向返回int且不带参数的函数的指针

(我从以下网站获得:http://www.vineetgupta.com/blog/deciphering-complex-c-declarations)

我认为只有无效意味着没有争论.这真的意味着同样的事情:

int (*) (void)
Run Code Online (Sandbox Code Playgroud)

如果是这样,它在哪里声明*可用于指定无参数?

另外,我是否正确假设这样的抽象声明只存在于类型转换中?如果是这样,那么它的当前形式必须是无效的,因为它缺少周围的括号吗?所以int(*)(void)无效,但是(int(*)(void))有效,不是吗?

c

4
推荐指数
1
解决办法
168
查看次数

如何检查/运算符在C中是否没有余数?

我要检查if/经营者有没有剩余或不:

int x = 0;    
if (x = 16 / 4), if there is no remainder: 
   then  x = x - 1;
if (x = 16 / 5), if remainder is not zero:
   then  x = x + 1;
Run Code Online (Sandbox Code Playgroud)

如何检查是否有剩余C?以及
如何实施它?

c operator-keyword

4
推荐指数
1
解决办法
7436
查看次数

`if(x = 0)`是否是Java可编译的

Scott Ambler在他的书" Java编码标准"中说,我很感兴趣,并引用:

2.5.2在比较的左侧放置常数

所以他建议使用

if ( 1 == something ) {…}    
if ( 0 = x ) { …}
Run Code Online (Sandbox Code Playgroud)

代替

if ( something == 1 ) {…}    
if ( x = 0 ) { …}  
Run Code Online (Sandbox Code Playgroud)

我的天啊 !!!

他通过这样说来激励这一点:

"虽然它们都是等价的,至少在第一次检查时,左边的代码编译而右边的代码没有."

我知道(当我开始编写Java时,Java 14已经在使用中),这两种情况都会引发编译器错误.

从Ambler语句开始,我试图搜索Java语法if ( x = 0 );是否可编译.

你能帮我解决这个问题吗?我搜索了不同版本的JSR,我没有发现任何可能表明该代码在其他java版本上进行编译的更改.

我使用目标和源1.2编译Jre7编译器仍然会引发编译器错误.不幸的是我没有Java 1.1编译器:9

我的问题是:

if(x = 0); 是否可与旧版Java编译器兼容?

java convention compilation version conditional-statements

4
推荐指数
2
解决办法
2121
查看次数

使用python解析JSON以根据条件获取值

我是 python 新手,尝试解析 json 文件并根据条件获取所需字段。

例如,如果 status = true,则打印名称

json文件:

[
  {
    "id": "12345",
    "name": "London",
    "active": true,
    "status": "true",
    "version": "1.0",
    "tags": [
    ]
  },
  {
    "id": "12457",
    "name": "Newyork",
    "active": true,
    "status": "false",
    "version": "1.1",
    "tags": [
    ]
  },
]
Run Code Online (Sandbox Code Playgroud)

预期输出:

名称 : 伦敦

请帮我解决这个问题。先感谢您。

python json

4
推荐指数
1
解决办法
5740
查看次数

字符串比较似乎不适用于从文件读取的行

我有一个名为test.txt包含以下内容的文件:

Line 1
Line 2
Line 3
Line 4
Run Code Online (Sandbox Code Playgroud)

我有这样简单的Python程序:

f = open("test.txt")

myline = "Line 3"
for line in f:
    print myline + " - " + line
    if myline == line:
        print "We have a match!"

if myline == "Line 3":
    print "This works."
Run Code Online (Sandbox Code Playgroud)

我得到了这个结果:

Line 3 - Line 1

Line 3 - Line 2

Line 3 - Line 3

Line 3 - Line 4

This works.
Run Code Online (Sandbox Code Playgroud)

为什么不"我们有匹配!" 打印?

我错过了什么?

python

4
推荐指数
2
解决办法
3089
查看次数

如何比较"月日期hh:mm:ss"格式的两个时间戳来检查+ ve或-ve值

我检查了stackoverflow网站的答案,我没有得到,所以我在这里发布.

我的问题是:

如何比较格式的两个时间戳"Month Date hh:mm:ss"

我用C和C++编写程序,时间是可显示的字符串格式.

示例:

time1 = "Mar 21 11:51:20"
time2 = "Mar 21 10:20:05"
Run Code Online (Sandbox Code Playgroud)

我想比较time1和tme2并找出是否time2之后 time1,我需要输出为truefalse,如下所示:

 if time2 > time1 then 
       i need output as 1 
 or 
       0 or -1 anything
Run Code Online (Sandbox Code Playgroud)

我用过difftime(time2,time1),但它返回和diff之间的增量时间. 我想检查更大或没有. time1time2

如有任何帮助,请提前致谢

c c++ comparison time

3
推荐指数
1
解决办法
2万
查看次数

过渡中的歧义:如何在NFA中处理字符串?

我已经根据给定的正则表达式制作了DFA,以匹配测试字符串。在某些情况下.*会发生这种情况。(例如.*ab)。假设现在计算机处于状态1。在DFA中,.*是指所有字符到其自身的过渡, 是指从状态1到a的另一过渡。如果测试字符串包含“ a”,则可能是过渡,因为从状态1开始,计算机可以进入两种状态,这在DFA中是不可能的。

regex dfa nfa regular-language kleene-star

3
推荐指数
1
解决办法
1333
查看次数

为什么我不能在for循环中使用x + 1?

我正在处理该代码,我试图使用x + 1而不是++x结果是无限循环并且在屏幕上打印了零.

这是代码:

#include <stdio.h>
int main(void){
  int x;
  for(x = 0; x <= 100; x + 1) //instead of ++x
    printf("%d\t",x);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我想知道这个动作.....为什么编译器没有产生这样的错误,,,,实际发生了什么?!! 并被x++视为x += 1?!

c

3
推荐指数
3
解决办法
437
查看次数

C基础知识 - 变量和指针存在问题

我在学习C方面遇到了一些问题,而且我真的没有其他地方可以提出建议.我来自一系列OOP语言,例如JavaScript和主要是Python,因此C是一个重大变化,我在尝试学习基础知识方面遇到了一些障碍.我最初是从Zed Shaw的"艰难学习C"开始的,但他并没有在书中教授任何东西.是的,他让你写了很多代码并改变了一些东西,但是我不知道为什么代码会工作,而这只会导致更复杂的例子.

我遇到的主要问题是变量和指针之间的区别(我认为它是非常独特的,直到我看到一些我将在下面发布的例子,这完全模糊了两者之间的界限).

例如,我理解声明和初始化一个int被调用的a和一个指针,p看起来像这样:

int a;
int *p;

a = 12;
p = &a;
Run Code Online (Sandbox Code Playgroud)

令我困惑的是当你声明看起来像指针的变量,但根本不是指针(或者它们是什么?).例如:

char *string = "This is a string";
printf("%s\n", string);
Run Code Online (Sandbox Code Playgroud)

什么string时候定义和初始化?它是指针吗?如果是的话,为什么不在printf函数中打印它时取消引用它?有很多像这样的例子让我很困惑.

我遇到的另一个例子没有任何意义:

int i;
scanf("%d", &i);
Run Code Online (Sandbox Code Playgroud)

i当&符号应该引用变量的内存中的位置而不是值时,这个函数如何更新整数的值?阵列和结构变得更加复杂,这是我停下来的地方,我决定要找一些建议.


老实说,我觉得很尴尬发布这样一个菜鸟问题,但每个人都从某个地方开始.这些基础知识是我知道在继续之前需要能够理解的东西,但是当我看到与我刚刚学到的内容相矛盾的代码示例时,我很难理解它.我知道这是一个非常普遍的问题,但我希望你们中的一些人能够解释这些基础知识,或者指出我可以更好地学习/理解这一点的方向.我遇到的大多数视频教程都过于笼统,与在线文本教程相同,他们告诉你如何做某事,但不解释它,这会导致一些严重的问题.

c pointers

3
推荐指数
1
解决办法
283
查看次数

隐式声明是否应该返回错误

考虑以下测试程序

#include<stdio.h>
#include<stdlib.h>
#include <math.h>

int main()
{
   double t = nan(NULL);
   printf("%g\n",t);
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译

/usr/local/bin/gcc  -lm -o test test.c
Run Code Online (Sandbox Code Playgroud)

输出是预期的NaN.但是,如果我输入错误或犯了错误而遗漏了

#include <math.h>
Run Code Online (Sandbox Code Playgroud)

它编译好,没有错误,没有警告,但输出为0

如果我用-Wall它编译确实给出警告警告:隐式声明函数`nan'虽然这种行为似乎不仅仅是一个警告.是否有任何意义不停止编译?并且有没有人有任何建议如何阻止这导致相当大的文件的主要问题?

c gcc

3
推荐指数
1
解决办法
372
查看次数