473,406 Members | 2,259 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,406 software developers and data experts.

a^=(b^=a); ?

Is this legal C expression
a^=(b^=a);
(wrt to sequence points) ?

Yakov

Sep 5 '06 #1
29 1843

iler...@gmail.com wrote:
Is this legal C expression
a^=(b^=a);
(wrt to sequence points) ?

Yakov
Yes, it is. ^= is an operator. It is as legal as something as common as
this:
a^=(b = 5);

Mark

Sep 5 '06 #2
"markpapadakis" <ma***********@gmail.comwrites:
iler...@gmail.com wrote:
>Is this legal C expression
a^=(b^=a);
(wrt to sequence points) ?

Yakov

Yes, it is. ^= is an operator. It is as legal as something as common as
this:
a^=(b = 5);
Do you understand what a "sequence point" is? Your answer
implies that you do not.
--
Just another C hacker.
Sep 5 '06 #3
il*****@gmail.com writes:
Is this legal C expression
a^=(b^=a);
(wrt to sequence points) ?
In my opinion, it is at best doubtful, because it both modifies
`a' and reads its prior value other than to determine the value
to be stored (it reads it to determine the value to store in
`b'). It is possible that I do not understand the fully
implications of the rules, but I definitely would not assume that
this code is correct.
--
"The lusers I know are so clueless, that if they were dipped in clue
musk and dropped in the middle of pack of horny clues, on clue prom
night during clue happy hour, they still couldn't get a clue."
--Michael Girdwood, in the monastery
Sep 5 '06 #4

Ben Pfaff wrote:
"markpapadakis" <ma***********@gmail.comwrites:
iler...@gmail.com wrote:
Is this legal C expression
a^=(b^=a);
(wrt to sequence points) ?

Yakov
Yes, it is. ^= is an operator. It is as legal as something as common as
this:
a^=(b = 5);

Do you understand what a "sequence point" is? Your answer
implies that you do not.
--
Just another C hacker.
Right you are. I was not aware of the term. I am now, though.

In which case it seems invalid for in one subexpression a is read and
in another it is modified, and one subexpression depends on each other.

Sep 5 '06 #5
Ben Pfaff wrote:
il*****@gmail.com writes:
Is this legal C expression
a^=(b^=a);
(wrt to sequence points) ?

In my opinion, it is at best doubtful, because it both modifies
`a' and reads its prior value other than to determine the value
to be stored (it reads it to determine the value to store in
`b'). It is possible that I do not understand the fully
implications of the rules, but I definitely would not assume that
this code is correct.
By that logic, doesn't a = f(a) have potential undefined behaviour too?
I'd say both are fine. The evaluation of the second a is required to
determine the new value to store in a, so there's no sequence point
violation.

Sep 5 '06 #6
"Harald van DD3k" <tr*****@gmail.comwrites:
Ben Pfaff wrote:
>il*****@gmail.com writes:
Is this legal C expression
a^=(b^=a);
(wrt to sequence points) ?

In my opinion, it is at best doubtful, because it both modifies
`a' and reads its prior value other than to determine the value
to be stored (it reads it to determine the value to store in
`b'). It is possible that I do not understand the fully
implications of the rules, but I definitely would not assume that
this code is correct.

By that logic, doesn't a = f(a) have potential undefined behaviour too?
I'd say both are fine. The evaluation of the second a is required to
determine the new value to store in a, so there's no sequence point
violation.
You may be right. However, I wouldn't write code like that in
any case. It is more obscure than the equivalent form:
b ^= a;
a ^= b;

--
"If I've told you once, I've told you LLONG_MAX times not to
exaggerate."
--Jack Klein
Sep 5 '06 #7
Hi, I didn't know the term "sequence point" and I now understand the
concept, at least as it is described here

http://en.wikipedia.org/wiki/Sequence_point

I am new in c. In words, could someone explain what a^=(b^=a) actually
does. I would be given values of a and b I would be struggling in an
exam to give an answer

Thank you
John

Sep 5 '06 #8
Hi, I didn't know the term "sequence point" and I now understand the
concept, at least as it is described here

http://en.wikipedia.org/wiki/Sequence_point

I am new in c. In words, could someone explain what a^=(b^=a) actually
does. I would be given values of a and b I would be struggling in an
exam to give an answer

Thank you
John

Sep 5 '06 #9
>il*****@gmail.com writes:
Is this legal C expression
a^=(b^=a);
(wrt to sequence points) ?
>Ben Pfaff wrote:
>In my opinion, it is at best doubtful, because it both modifies
`a' and reads its prior value other than to determine the value
to be stored (it reads it to determine the value to store in
`b'). It is possible that I do not understand the fully
implications of the rules, but I definitely would not assume that
this code is correct.
In article <11**********************@b28g2000cwb.googlegroups .com>
Harald van Dijk <tr*****@gmail.comwrote:
>By that logic, doesn't a = f(a) have potential undefined behaviour too?
If f() is a macro, yes. If f() is a function, no -- there is a
sequence point before the call to f(), and at the point where f()
returns. I do think that everyone will agree that, if f() is the
following macro:

#define f(x) ((x) + 1)

then:

a = f(a);

is well-defined.
>I'd say both are fine. The evaluation of the second a is required to
determine the new value to store in a, so there's no sequence point
violation.
It seems a little "thin ice" to me, in that "a" here is used both
to determine the new value for "a", and also to determine the new
value for "b", with "new value for b" having the first binding.

What we really need here is Appendix S (or equivalent: mathematical
rules for deciding "definedness" of expressions with or without
various sequence points). Too bad it never got into C99. :-)

Sans Appendix S, I would say "defined, but please don't do it anyway".
--
In-Real-Life: Chris Torek, Wind River Systems
Salt Lake City, UT, USA (40°39.22'N, 111°50.29'W) +1 801 277 2603
email: forget about it http://web.torek.net/torek/index.html
Reading email is like searching for food in the garbage, thanks to spammers.
Sep 5 '06 #10
On 2006-09-05, John Gerrard <md*****@hotmail.comwrote:
Hi, I didn't know the term "sequence point" and I now understand the
concept, at least as it is described here

http://en.wikipedia.org/wiki/Sequence_point

I am new in c. In words, could someone explain what a^=(b^=a) actually
does.
a^=(b^=a); b^=a

swaps a and b without using a temporary variable.
I would be given values of a and b I would be struggling in an
exam to give an answer
It makes sense if you just thing about what ^ does to each bit.
Sep 5 '06 #11
On 2006-09-05, il*****@gmail.com <il*****@gmail.comwrote:
Is this legal C expression
a^=(b^=a);
(wrt to sequence points) ?
See http://c-faq.com/expr/xorswapexpr.html:

Not portably, it doesn't. It attempts to modify the variable a
twice between sequence points, so its behavior is undefined.

--
Posted via a free Usenet account from http://www.teranews.com

Sep 5 '06 #12

Matthew R. Dempsky wrote:
On 2006-09-05, il*****@gmail.com <il*****@gmail.comwrote:
Is this legal C expression
a^=(b^=a);
(wrt to sequence points) ?

See http://c-faq.com/expr/xorswapexpr.html:

Not portably, it doesn't. It attempts to modify the variable a
twice between sequence points, so its behavior is undefined.
Take a close look, it modifies both a and b once.

Robert Gamble

Sep 5 '06 #13
In article <11**********************@m79g2000cwm.googlegroups .com>,
Robert Gamble <rg*******@gmail.comwrote:
>Matthew R. Dempsky wrote:
>On 2006-09-05, il*****@gmail.com <il*****@gmail.comwrote:
a^=(b^=a);
(wrt to sequence points) ?
> Not portably, it doesn't. It attempts to modify the variable a
twice between sequence points, so its behavior is undefined.
>Take a close look, it modifies both a and b once.
This reminds me of the heated discussion about a = (a=5,11)
which went on for prolonged periods.

I seem to recall an argument at the time based upon whether certain
operations could overlap or not. I'd have to review to see whether
the argument applied only to the comma sequencing case or whether
it would apply to the present case as well.
--
Prototypes are supertypes of their clones. -- maplesoft
Sep 5 '06 #14
On 2006-09-05, Robert Gamble <rg*******@gmail.comwrote:
>
Matthew R. Dempsky wrote:
>On 2006-09-05, il*****@gmail.com <il*****@gmail.comwrote:
Is this legal C expression
a^=(b^=a);
(wrt to sequence points) ?

See http://c-faq.com/expr/xorswapexpr.html:

Not portably, it doesn't. It attempts to modify the variable a
twice between sequence points, so its behavior is undefined.

Take a close look, it modifies both a and b once.
D'oh, you're right. I misread.

--
Posted via a free Usenet account from http://www.teranews.com

Sep 5 '06 #15

Walter Roberson wrote:
In article <11**********************@m79g2000cwm.googlegroups .com>,
Robert Gamble <rg*******@gmail.comwrote:
Matthew R. Dempsky wrote:
On 2006-09-05, il*****@gmail.com <il*****@gmail.comwrote:
a^=(b^=a);
(wrt to sequence points) ?
Not portably, it doesn't. It attempts to modify the variable a
twice between sequence points, so its behavior is undefined.
Take a close look, it modifies both a and b once.

This reminds me of the heated discussion about a = (a=5,11)
which went on for prolonged periods.
Yes, I remember that. I also seem to remember that you were the lone
voice insisting that this was not well-defined ;)
I seem to recall an argument at the time based upon whether certain
operations could overlap or not. I'd have to review to see whether
the argument applied only to the comma sequencing case or whether
it would apply to the present case as well.
The argument made was simple: the expression on the RHS has to be
evaluated before the variable being assigned to on the LHS. Since
there was a sequence point (the comma) on the RHS after the first
assignment to a and before the second assignment to a the expression
was considered, by this argument, to be well-defined. I don't think we
need to get into this again, interested parties can review the original
thread, but the summary was that everyone except one person was in
agreement on this (I don't recall if you were ever convinced).

Robert Gamble

Sep 5 '06 #16
In article <11**********************@p79g2000cwp.googlegroups .com>,
Robert Gamble <rg*******@gmail.comwrote:
>Walter Roberson wrote:
>This reminds me of the heated discussion about a = (a=5,11)
which went on for prolonged periods.
>Yes, I remember that. I also seem to remember that you were the lone
voice insisting that this was not well-defined ;)
It was not I: I did not post in that thread at all.
(which was x=(x=5,11) -- I misremembered the variable name)

>I seem to recall an argument at the time based upon whether certain
operations could overlap or not.
>I don't think we
need to get into this again, interested parties can review the original
thread,
http://groups.google.ca/group/comp.l...3647f8958300f1

>but the summary was that everyone except one person was in
agreement on this (I don't recall if you were ever convinced).
I think this was the overlapping argument I was thinking of,
http://groups.google.ca/group/comp.l...ec3d94c24c772b
by Tim at woodall.me.uk
and also Gordon Burditt's
http://groups.google.ca/group/comp.l...ee28c618a6d7fc
specifically talking about partial ordering being required by the standard
but there being no full ordering in the standard.
--
"No one has the right to destroy another person's belief by
demanding empirical evidence." -- Ann Landers
Sep 5 '06 #17
Walter Roberson wrote:
In article <11**********************@p79g2000cwp.googlegroups .com>,
Robert Gamble <rg*******@gmail.comwrote:
Walter Roberson wrote:
This reminds me of the heated discussion about a = (a=5,11)
which went on for prolonged periods.
Yes, I remember that. I also seem to remember that you were the lone
voice insisting that this was not well-defined ;)

It was not I: I did not post in that thread at all.
(which was x=(x=5,11) -- I misremembered the variable name)
I had confused you with Jordan Abel, I sincerely apologize.

Robert Gamble

Sep 5 '06 #18
Chris Torek wrote:
>>il*****@gmail.com writes:

Is this legal C expression
a^=(b^=a);
(wrt to sequence points) ?
.... snip ...
>
It seems a little "thin ice" to me, in that "a" here is used both
to determine the new value for "a", and also to determine the new
value for "b", with "new value for b" having the first binding.

What we really need here is Appendix S (or equivalent: mathematical
rules for deciding "definedness" of expressions with or without
various sequence points). Too bad it never got into C99. :-)

Sans Appendix S, I would say "defined, but please don't do it anyway".
It seems to me that it fits all the rules. For example, the BNF
for an assignment is something like "<leftvalue<eqop>
<expression>;". The BNF for expression includes assignment. So
two applications handle the whole statement. The original value of
a is only accessed in order to determine the final value, and there
is no multiple assignment to a involved.

--
Chuck F (cbfalconer at maineline dot net)
Available for consulting/temporary embedded and systems.
<http://cbfalconer.home.att.net>
Sep 6 '06 #19
"Matthew R. Dempsky" wrote:
On 2006-09-05, il*****@gmail.com <il*****@gmail.comwrote:
>Is this legal C expression
a^=(b^=a);
(wrt to sequence points) ?

See http://c-faq.com/expr/xorswapexpr.html:

Not portably, it doesn't. It attempts to modify the variable a
twice between sequence points, so its behavior is undefined.
No it doesn't.

--
Chuck F (cbfalconer at maineline dot net)
Available for consulting/temporary embedded and systems.
<http://cbfalconer.home.att.net>
Sep 6 '06 #20

Ben Pfaff wrote:
il*****@gmail.com writes:
Is this legal C expression
a^=(b^=a);
(wrt to sequence points) ?

In my opinion, it is at best doubtful, because it both modifies
`a' and reads its prior value other than to determine the value
to be stored (it reads it to determine the value to store in
`b'). It is possible that I do not understand the fully
implications of the rules, but I definitely would not assume that
this code is correct.
It's allowed; the "only to determine the value to be
stored" is meant to rule out things like f( i=1, i )
and a[a[0]] = 1 (where a[0] is initially 0). The second
part, about ruling out "left hand side" accesses, is IMO
a deranged restriction, but that's a different topic.

Sep 6 '06 #21

Chris Torek wrote:
il*****@gmail.com writes:
Is this legal C expression
a^=(b^=a);
(wrt to sequence points) ?
Ben Pfaff wrote:
In my opinion, it is at best doubtful, because it both modifies
`a' and reads its prior value other than to determine the value
to be stored (it reads it to determine the value to store in
`b'). It is possible that I do not understand the fully
implications of the rules, but I definitely would not assume that
this code is correct.

In article <11**********************@b28g2000cwb.googlegroups .com>
Harald van Dijk <tr*****@gmail.comwrote:
By that logic, doesn't a = f(a) have potential undefined behaviour too?

If f() is a macro, yes. If f() is a function, no -- there is a
sequence point before the call to f(), and at the point where f()
returns. I do think that everyone will agree that, if f() is the
following macro:

#define f(x) ((x) + 1)

then:

a = f(a);

is well-defined.
As long as f() doesn't have a side effect on x,
a = f(a) is defined, provided f(a) by itself is
defined.
I'd say both are fine. The evaluation of the second a is required to
determine the new value to store in a, so there's no sequence point
violation.

It seems a little "thin ice" to me, in that "a" here is used both
to determine the new value for "a", and also to determine the new
value for "b", with "new value for b" having the first binding.
It's defined, as explained in the response to Ben Pfaff's post.
What we really need here is Appendix S (or equivalent: mathematical
rules for deciding "definedness" of expressions with or without
various sequence points). Too bad it never got into C99. :-)

Sans Appendix S, I would say "defined, but please don't do it anyway".
Wholehearted agreement on both points.

Sep 6 '06 #22
Ben C wrote:
On 2006-09-05, John Gerrard <md*****@hotmail.comwrote:
>Hi, I didn't know the term "sequence point" and I now understand the
concept, at least as it is described here

http://en.wikipedia.org/wiki/Sequence_point

I am new in c. In words, could someone explain what a^=(b^=a) actually
does.

a^=(b^=a); b^=a

swaps a and b without using a temporary variable.
That's what the writer of that code likely *intends* it to do, but there
is no guarantee that it *actually* does that. The expression:

a^=(b^=a)

is undefined; period. Additionally, except for unsigned integer types,
the result of the expression:

a^=(b^=a); b^=a

can be undefined.
I would be given values of a and b I would be struggling in an
exam to give an answer

It makes sense if you just thing about what ^ does to each bit.

--
Clark S. Cox III
cl*******@gmail.com
Sep 6 '06 #23
en******@yahoo.com writes:
Ben Pfaff wrote:
>il*****@gmail.com writes:
Is this legal C expression
a^=(b^=a);
(wrt to sequence points) ?

In my opinion, it is at best doubtful, because it both modifies
`a' and reads its prior value other than to determine the value
to be stored (it reads it to determine the value to store in
`b'). It is possible that I do not understand the fully
implications of the rules, but I definitely would not assume that
this code is correct.

It's allowed; the "only to determine the value to be
stored" is meant to rule out things like f( i=1, i )
and a[a[0]] = 1 (where a[0] is initially 0). [...]
Well, you can say that, and it's a reasonable thing to say, but
it is difficult to show that that is actually what the standard
means.
--
int main(void){char p[]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuv wxyz.\
\n",*q="kl BIcNBFr.NKEzjwCIxNJC";int i=sizeof p/2;char *strchr();int putchar(\
);while(*q){i+=strchr(p,*q++)-p;if(i>=(int)sizeof p)i-=sizeof p-1;putchar(p[i]\
);}return 0;}
Sep 6 '06 #24
Clark S. Cox III wrote:
Ben C wrote:
On 2006-09-05, John Gerrard <md*****@hotmail.comwrote:
Hi, I didn't know the term "sequence point" and I now understand the
concept, at least as it is described here

http://en.wikipedia.org/wiki/Sequence_point

I am new in c. In words, could someone explain what a^=(b^=a) actually
does.
a^=(b^=a); b^=a

swaps a and b without using a temporary variable.

That's what the writer of that code likely *intends* it to do, but there
is no guarantee that it *actually* does that. The expression:

a^=(b^=a)

is undefined; period.
How do you figure that?
Additionally, except for unsigned integer types,
the result of the expression:

a^=(b^=a); b^=a

can be undefined.
How can the first one be undefined in all cases where the second one,
which is just the first one plus an additional statement, be undefined
only some of the time?

Robert Gamble

Sep 6 '06 #25
Robert Gamble wrote:
Clark S. Cox III wrote:
>Ben C wrote:
>>On 2006-09-05, John Gerrard <md*****@hotmail.comwrote:
Hi, I didn't know the term "sequence point" and I now understand the
concept, at least as it is described here

http://en.wikipedia.org/wiki/Sequence_point

I am new in c. In words, could someone explain what a^=(b^=a) actually
does.
a^=(b^=a); b^=a

swaps a and b without using a temporary variable.
That's what the writer of that code likely *intends* it to do, but there
is no guarantee that it *actually* does that. The expression:

a^=(b^=a)

is undefined; period.

How do you figure that?
It modifies 'a' and it evaluates a for a reason other than determining
it's new value in between sequence points.
>
>Additionally, except for unsigned integer types,
the result of the expression:

a^=(b^=a); b^=a

can be undefined.

How can the first one be undefined in all cases where the second one,
which is just the first one plus an additional statement, be undefined
only some of the time?
This is a typo (more a copy-paste-o) on my part. I was going for the
almost equivalent, but sequence-point friendly:

b^=a; a^=b; b^=a;

This is not undefined because of sequence points, but it still may be
when a or b are signed.

--
Clark S. Cox III
cl*******@gmail.com
Sep 6 '06 #26
Clark S. Cox III schrieb:
Robert Gamble wrote:
>Clark S. Cox III wrote:
>>a^=(b^=a)

is undefined; period.
How do you figure that?

It modifies 'a' and it evaluates a for a reason other than determining
it's new value in between sequence points.
Wouldn't then with

a = a; and
node = node->next;

be undefined, too?

(with a of type int and node a linked list structure pointer)

--
Thomas
http://www.netmeister.org/news/learn2quote.html
Sep 6 '06 #27
Thomas J. Gritzan wrote:
Clark S. Cox III schrieb:
>Robert Gamble wrote:
>>Clark S. Cox III wrote:
a^=(b^=a)

is undefined; period.
How do you figure that?
It modifies 'a' and it evaluates a for a reason other than determining
it's new value in between sequence points.

Wouldn't then with

a = a; and
node = node->next;

be undefined, too?

(with a of type int and node a linked list structure pointer)
After writing a long defense of my position, I come to realize that
a^=(b^=a) might not be undefined. Perhaps I just saw the old XOR swap
trick, and my brain automatically replaced it with "bad, don't do that!"

--
Clark S. Cox III
cl*******@gmail.com
Sep 6 '06 #28
Harald van Dijk wrote:
Ben Pfaff wrote:
>il*****@gmail.com writes:
>>Is this legal C expression
a^=(b^=a);
(wrt to sequence points) ?
In my opinion, it is at best doubtful, because it both modifies
`a' and reads its prior value other than to determine the value
to be stored (it reads it to determine the value to store in
`b'). It is possible that I do not understand the fully
implications of the rules, but I definitely would not assume that
this code is correct.

By that logic, doesn't a = f(a) have potential undefined behaviour too?
No, because there is a sequence point at the function call.
I'd say both are fine. The evaluation of the second a is required to
determine the new value to store in a, so there's no sequence point
violation.
I have to now agree with this part though, perhaps I was thinking of the
(a ^= b ^= a ^= b) XOR swap which is 100%, unambiguously undefined.

--
Clark S. Cox III
cl*******@gmail.com
Sep 6 '06 #29
Clark S. Cox III wrote:
Thomas J. Gritzan wrote:
Clark S. Cox III schrieb:
Robert Gamble wrote:
Clark S. Cox III wrote:
a^=(b^=a)

is undefined; period.
How do you figure that?
It modifies 'a' and it evaluates a for a reason other than determining
it's new value in between sequence points.
Wouldn't then with

a = a; and
node = node->next;

be undefined, too?

(with a of type int and node a linked list structure pointer)

After writing a long defense of my position, I come to realize that
a^=(b^=a) might not be undefined.
I agree with ena8t8si that this is well-defined although the meaning of
the clause you cite could be better spelled out in the Standard.

Robert Gamble

Sep 6 '06 #30

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

0
by: Margie Whitaker | last post by:
--B175A.8E9D0BB_A1C01A9 Content-Type: text/html; Content-Transfer-Encoding: quoted-printable <html> <head> <meta http-equiv=3D"Content-Language" content=3D"en-us"> <meta name=3D"GENERATOR"...
18
by: Andy Green | last post by:
Emphasis is on efficiancy and speed this is the excercise: The program should monitor a possibly infinite stream of characters from the keyboard (standard input). If it detects the sequence "aaa"...
2
by: Gary Short | last post by:
Hello group, I was wondering if anyone here could help me with an odd WebClient problem. When I run the following code: WebClient aWebClient = new WebClient(); Byte aBA =...
19
by: Levi Campbell | last post by:
Hi, I'm thinking about writing a system for DJing in python, but I'm not sure if Python is fast enough to handle the realtime audio needed for DJing, could a guru shed some light on this subject...
5
by: Chris Lasher | last post by:
Hey guys and gals, This is a followup of my "Counting all permutations of a substring" thread (see...
12
by: Keith Patrick | last post by:
Can someone tell me the difference in terms of actual implications using: namespace MyNamespace { using System; class MyClass {...} } vs. using System;
26
by: John Salerno | last post by:
I probably should find an RE group to post to, but my news server at work doesn't seem to have one, so I apologize. But this is in Python anyway :) So my question is, how can find all...
14
by: micklee74 | last post by:
hi say i have string like this astring = 'abcd efgd 1234 fsdf gfds abcde 1234' if i want to find which postion is 1234, how can i achieve this...? i want to use index() but it only give me the...
1
by: noro | last post by:
Hello again. I have a task i need to do and i can't seem to find an elegent solution. i need to make a tree like data structure (not necessry a binary tree). i would like each node to...
2
by: copx | last post by:
What is wrong with the following code? My compiler (GCC) produces a warning which states that the initialisation values of a local struct are "not computable at load time". A warning is not equal...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.